ASP.NET Core + Health Checks: monitorando a saúde de uma aplicação via dashboard

Renato Groffe
3 min readApr 29, 2019

--

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:

ASP.NET Core 2.2 + Entity Framework Core + SQL Server + PowerShell + Redis + Azure Application Insights + Azure App Service

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:

Pressionar o botão “+” trará o status dos diferentes Health Checks da aplicação:
Health Check da base SQL Server com falhas

Já a próxima imagem traz o status “saudável” (Healthy) para a aplicação e todos os seus Health Checks:

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker