DEV Community

Fernando Mendes
Fernando Mendes

Posted on

Gerenciando a integridade de suas aplicações em AspNet Core

Olá pessoal, tudo bem?

Com o crescimento dos microserviços, temos a preocupação de saber se as nossas aplicações, banco de dados, serviços e etc, estão rodando normalmente, se nenhum deles está fora do ar.

Para isso existe um pacote do nuget muito legal, que se chama:
*AspNetCore.Diagnostics.HealthChecks

Verifique se pelo o que você precisa, existe a o pacote específico, veja em:
https://github.com/xabaril/AspNetCore.Diagnostics.HealthChecks

Para o controle de aplicações, serviços, banco de dados, existe um pacote complementar para cada um.

Como por exemplo:

  • AspNetCore.HealthChecks.MongoDb
  • AspNetCore.HealthChecks.RabbitMQ
  • AspNetCore.HealthChecks.Kafka
  • AspNetCore.HealthChecks.Uris

Vamos fazer um exemplo, da utilização desse pacote.

Estrutura da solução

Alt Text

Veja que criei duas API´s.

Neste exemplo, quero gerenciar o meu banco de dados que será em Mongodb, meu serviço de fila que será Kafka, e API exemplohealthchecks2.

Para o projeto ExemploHealthChecks adicione as referências:

  • Install-Package AspNetCore.HealthChecks.MongoDb
  • Install-Package AspNetCore.HealthChecks.Kafka
  • Install-Package AspNetCore.HealthChecks.Uris
  • Install-Package AspNetCore.HealthChecks.UI
  • Install-Package AspNetCore.HealthChecks.UI.Client

Veja como configurar o Kafka, no meu post sobre o serviço:
https://dev.to/marraia

Configure no Startup.cs, os endereços dos serviços que iremos monitorar:

Veja que na linha 19, estamos adicionando os serviços que vamos monitorar, com seus respectivos endereços

    services.AddHealthChecks()
      .AddMongoDb(connectionMongo, name: "mongoDb")
      .AddKafka(configKafka, name: "kafka")
      .AddUrlGroup(new Uri(enderecoExemplo2), name: "exemploHelathChecks2");

E na linha 25, vamos adicionar um dashboard para visualizar a integridades dos serviços configurados

services.AddHealthChecksUI();

O pacote do Health com esse Dashboard, cria um arquivo chamado healthchecksdb que irá armazenar os dados coletados dos serviços, como uma especie de banco de dados.

Na linha 38, estamos gerando uma URL para o Dashboard do Health. Para funcionar corretamente essa URL, temos que adicionar ao arquivo appsettings.json essa configuração:

"HealthChecks-UI": {
    "HealthChecks": [
      {
        "Name": "Health-ExemploAPI",
        "Uri": "http://localhost:61303/health-marraia"
      }
    ]
  }

E na linha 45, ativamos o Dashboard, para ser utilizado depois que aplicação for iniciada.

Depois de configurado, vamos executar o projeto.

Agora, para abrir o Dashboard do Health que configuramos, vamos abrir esse link:
http://localhost:61303/healthchecks-ui

Alt Text

Veja que ele verifica em um tempo configurado, a integridades dos serviços. No exemplo, todos os serviços estão no ar.

Agora, não irei executar a API exemploHealthChecks2, para mostrar que ficará diferente a visualização no Dashboard

Alt Text

Veja que a API exemploHealthChecks2, fica com um estado de Unhealthy

Bom pessoal, este exemplo é bem simples, somente para mostrar como de forma fácil e simples, criar um monitoramento de seus serviços e aplicações.

Espero que tenham gostado, segue o projeto que utilizei de exemplo em meu Github:

marraia/HealthChecks

Até a próxima!

Top comments (0)