Skip to main content

Health Checks em aplicações .NET 5 é muito simples. Apenas com algumas linhas de código podemos configurar tudo para monitorar a saúde de nosso aplicativo.

Padrão de monitoramento de endpoint de saúde

“Implemente verificações funcionais em um aplicativo que ferramentas externas possam acessar por meio de endpoints expostos em intervalos regulares. Isso pode ajudar a verificar se os aplicativos e serviços estão funcionando corretamente”.

Introdução

Nesta série de artigos iremos explorar mais sobre Endpoint Monitoring para aplicações web.

  1. Health Checks em Aplicações .NET 5 [esta postagem]
  2. Adicionando verificação de integridade da interface do usuário
  3. Monitoramento de endpoint com Azure Application Insights
  4. Usando o Monitoramento de endpoint dos Serviços de Aplicativo do Azure

Nesse artigo adicionaremos um ponto de extremidade (endpoint) para monitorar o status de integridade de uma aplicação .NET 5.

Vamos entender como isso é muito simples em aplicativos .NET Core / .NET 5. Com apenas algumas linhas de código, toda a infraestrutura está pronta para exibir o Health Status de nossos aplicativos ASP.NET.

Nesse endpoint verificar a integridade de serviços como:

  • Serviços de banco de dados como: SQL Server, Oracle, MySql, MongoDB, entre outros;
  • Conectividade de API externa – URLs externos;
  • Conectividade de disco (leitura/gravação);
  • Serviços de cache, como RedisMemcache, entre outros;
  • Implementações personalizadas (algo exclusivo para seu sistema).

Existe um validador para tudo que você precisa. Porém, caso não encontre uma implementação adequada podemos criar um validador customizado.

Adicionando um Health Check básico ao ASP.NET

Primeiro, modifique o método ConfigureServices como descrito abaixo.
Isso irá adicionar o serviço de HealthChecks ao container de injeção de dependência. 

ConfigureServices – Startup.cs

Ainda no arquivo Startup.cs. No metodo app.UseEndpoints() no método Configure, adicione a entrada MaphealthChecks() para expor o endpoint de monitoração.

Configure – Startup.cs

Compile o projeto, execute e acesse a url http://{YOUR-URL}/healthcheck. Devemos ver algo como a imagem abaixo.

HealthCheck Healthy

Tudo pronto para adicionarmos serviços à lista de monitoramento.
Vamos adicionar o serviço Mongo Db à lista serviços monitorados.

Adicionando Mongo Db à lista de serviços monitorados

Vamos escolher o item adequado da lista do xabarilNo repositório Github do xabaril existem diversas implementações de AspNetCore.Diagnostics.HealthChecks prontos para uso, inclusive o Mongo Db.

  • AspNetCore.HealthChecks.System
  • AspNetCore.HealthChecks.Network
  • AspNetCore.HealthChecks.SqlServer
  • AspNetCore.HealthChecks.MongoDb
  • AspNetCore.HealthChecks.Npgsql
  • AspNetCore.HealthChecks.Elasticsearch
  • AspNetCore.HealthChecks.Redis
  • AspNetCore.HealthChecks.MySql

Adicione o pacote Nuget AspNetCore.HealthChecks.MongoDb ao seu projeto e modifique o método AddHealthChecks() para incluir o Mongo Db Health Check.

ConfigureServices – Startup.cs

Depois disso, estamos prontos para começar a monitorar a conectividade do Mongo Db.

Se executarmos o aplicativo novamente, veremos a seguinte saída – caso tenha configurado corretamente e tenha conectividade ao serviço Mongo Db.

HealthCheck com Mongo Db

Adicionando um segundo endpoint com mais detalhes

Vamos criar um segundo endpoint com mais informações sobre o status, como qual verificação de integridade está falhando e tags.

Configure – Startup.cs

Execute novamente e acesse endereço: /healthcheck-details.

HealthCheck Detalhes

Agora você pode personalizar a resposta do seu  endpoint HealthCheck conforme necessidade.

No próximo artigo, mostrarei como colocar uma Iterface Gráfica sobre o HealthCheck.

Código fonte para download

Ricardo de Mauro, Consultor de Sistemas na BRQ

BRQ fale conosco