Coisas como desempenho do banco de dados devem ser incluídas em uma verificação de integridade

Coisas como desempenho do banco de dados devem ser incluídas em uma verificação de integridade

Eu gerencio um webservice e é muito importante para minha empresa detectar e avisar se algum dos serviços está fora do ar, e também se alguma das operações que ela faz está demorando muito para responder. Até agora, havia um aplicativo da web separado (incluindo front e back-end) apenas para solicitar operações aleatórias para esses endpoints a cada 15 minutos, mas achei complicado, pois requer a manutenção de um webapp inteiro apenas para esse fim, e conheço muitos serviços da web gratuitos descobrir que deveria fazer o trabalho.

Configurei o AWS Healthchecks para substituir o webapp de votação e funciona perfeitamente para a parte do tempo de atividade, agora minha pergunta vem com a parte do tempo de resposta.

Todos esses serviços de verificação de integridade da API parecem estar preparados para solicitações não muito complexas, portanto, deve ser responsabilidade da API oferecer um endpoint de "status" para os serviços de verificação de integridade e incluir nesse "OK" coisas como latência do banco de dados ou deve ser o "verificador de integridade "o responsável por realizar solicitações complexas? Qual abordagem é mais correta?

Obrigado!

Responder1

Você provavelmente não deveria monitorar o desempenho do banco de dados através dos caminhos de verificação de integridade do aplicativo - alguns casos perigosos podem ocorrer. Digamos que você use ASGs na AWS e use as verificações de integridade do LB para determinar se o ASG deve alternar as máquinas. Se você começar a ter contenção de banco de dados (não relacionada ao seu aplicativo), seu ASG começará a remover nós. Portanto, você não apenas terá um banco de dados de baixo desempenho, mas também um ASG esgotado.

Normalmente, o desempenho deve ser monitorado fora da faixa de salubridade. Usamos muito o statsd e colocamos todas as nossas métricas, aplicativos e banco de dados nele, para que possamos representar graficamente e alertar com base nisso.

Lembre-se também de que, à medida que você dimensiona, a velocidade de sua verificação de integridade também aumentará - temos alguns serviços que recebem milhares de solicitações de verificação de integridade por segundo e, se cada um deles estiver realizando uma consulta sintética cara, nossa camada de dados ficará offline .

A lógica também fica mais complexa à medida que você adiciona camadas de cache - o que o endpoint de verificação de integridade deve retornar se o banco de dados estiver íntegro, mas o cache KV não?

No geral, embora o monitoramento de ponta a ponta seja fundamental para uma estratégia de monitoramento eficaz, eu recomendo fortemente o monitoramento fora de banda para as métricas de consulta existentes que estão fluindo para o banco de dados - elas são representativas do desempenho real do usuário e fornecerão uma métrica quantificável para como está realmente o desempenho da integridade do seu aplicativo.

informação relacionada