ASP.NET Core + Health Checks: monitorando a saúde de uma aplicação via dashboard
Em um artigo anterior abordei o uso de Health Checks no ASP.NET Core 2.2, com dicas sobre como ativar e configurar este tipo de recurso:
ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 2
Posteriormente dei continuidade a este assunto, cobrindo então a utilização de Health Checks em conjunto com o projeto Xabaril/AspNetCore.Diagnostics.HealthChecks no monitoramento via testes de disponibilidade com o Azure Application Insights:
ASP.NET Core 2.2 + Application Insights: monitorando a disponibilidade dos BDs de uma aplicação
O projeto demonstrado nesse segundo post foi inclusive disponibilizado no GitHub:
Neste novo artigo retomo o uso de Health Checks com o ASP.NET Core, mostrando dessa vez como 2 dos packages que compõem o projeto Xabaril/AspNetCore.Diagnostics.HealthChecks pode ser empregado na geração de um dashboard para a visualização da saúde de uma aplicação.
Importante destacar que a aplicação aqui apresentada é uma variação do exemplo que está no GitHub e que foi mencionado anteriormente.
Configurando o uso do dashboard de monitoramento
Para ativar o dashboard de monitoramento será necessário adicionar ao projeto os packages AspNetCore.HealthChecks.UI e AspnetCore.HealthChecks.UI.Client:
O arquivo appsettings.json também passará por alterações, através da inclusão da seção HealthChecks-UI: em HealthChecks uma identificação será informada em Name, além do endereço do Health Check que conterá os dados para a geração do dashboard em Uri.
A próxima listagem traz as alterações esperadas para a classe Startup:
- O endpoint /healthchecks-data-ui será configurado via operação UseHealthChecks no método Configure. Em HealthCheckOptions foram preenchidos o valor true para a propriedade Predicate (de maneira a serem retornadas informações de todos os Health Checks configurados em ConfigureServices) e o delegate ResponseWriter (com o valor associado a UIResponseWriter.WriteHealthCheckUIResponse, namespace HealthChecks.UI.Client);
- A chamada a UseHealthChecksUI ativará finalmente o dashboard, consumindo para isto os dados do endpoint /healthchecks-data-ui (conforme definido em appsettings.json).
Testes
Por default o endpoint para acesso ao dashboard será /healthchecks-ui (esta configuração pode ser alterada de acordo com a documentação do projeto Xabaril/AspNetCore.Diagnostics.HealthChecks). Nas imagens a seguir temos um exemplo de acesso a este endereço, com um dos Health Checks indicando falha nas tentativas de acesso a uma base de dados do SQL Server:
Já a próxima imagem traz o status “saudável” (Healthy) para a aplicação e todos os seus Health Checks: