Integridade das Aplicações com .Net Core 2.2 — /Health
Introdução
Nesse artigo, vamos demonstrar como verificar a integridade de uma aplicação .NET Core 2.2 e dos seus respectivos serviços utilizando o Health Check, que é uma funcionalidade interna de verificação de integridade.
Dessa forma, conseguimos monitorar em tempo real (via HTTP) os recursos físicos do servidor, como o uso de disco, memória e outros. Também é possível verificar a integridade das dependências de aplicativos externos como banco de dados, RabbitMQ e etc.
Mão na Massa
Para nosso exemplo, vamos simular uma aplicação que se comunica com 3 serviços diferentes: o MongoDB, o MySQL e o RabbitMQ.
Caso algum desses serviços não esteja no ar, nossa aplicação não irá funcionar e é papel do monitoramento de integridade nos informar essa indisponibilidade.
Ou seja, para o app estar com um estado Health (saudável,) é preciso que os seus serviços também estejam saudáveis.
Implementado o Health Check
Vamos entrar na classe Startup e modificar o método ConfigureServices e adicionar: “services. AddHealthChecks()” .
Em seguida vamos modificar o método Configure e adicionar o middleware:
Será por meio desse endpoint “/health” que o nosso sistema vai disponibilizar as verificações de integridade.
Agora que adicionamos o “/health”, vamos implementar os checks para cada serviço. Vá até o nugget e baixe os pacotes:
Após o download dos pacotes NuGet, vamos adicionar os checks no ConfigureServices:
Note que estamos adicionando um check para cada serviço e o HelthChecksUI para criarmos a interface.
Vamos adicionar no Configure o código abaixo para conseguirmos visualizar os checks através da Ui. Iremos acessá-lo pelo caminho “/health-ui” .
Por fim, vamos configurar o appsettings.json. É nele onde estão as conexões para os serviços. Além disso, iremos adicionar o “HealthChecks-UI”. Em URI, adicione a URL que está exportando o health.
Executando a aplicação
Agora é só executar a aplicação e acessar o /health e o /health-ui que seu app já está sendo monitorado.
Note que conseguimos realizar o monitoramento e verificar que a aplicação não está Health, pois o serviço MySql está fora do ar.
O monitoramento de integridade é extremamente importante quando se está trabalhado com microsserviços.