Implementando Health Checks nas API´s no .NET

Marcio Nizzola
4 min readJun 11, 2022

--

Implementando Health Checks nas API´s .net

Num cenário onde cada vez mais adota-se aplicações distribuídas, como por exemplo micro-serviços, saber se uma aplicação está funcionando e respondendo às solicitações trata-se de algo muito importante e que implica muitas vezes em não funcionamento de atividades críticas numa organização, que são só percebidas, quando algo já não está funcionando e de repente, prejuízos são percebidos apenas horas ou dias depois.

Mas por que isto acontece? Por não haver uma instrumentação adequada das aplicações para fornecer o mínimo de monitoramento que indique que há alguma falha no seu funcionamento.

Erros do tipo 500 que indicam muitas vezes uma falha grave na aplicação podem ser identificados pela implementação de Health Checks.

Mas o que é um Health Check?

Health Checks são endpoints disponibilizados na aplicação, quer seja pela implementação tradicional (criando numa controller como um endpoint normal) ou através de middlewares para que indiquem o funcionamento adequado da aplicação.

Mas como faço para implementar ?

Desde o .NET 2.2 podemos implementar isso de forma simples, incluindo na inicialização da nossa aplicação no arquivo “Startup.cs” 2 linhas básicas.

No método “ConfigureServices” basta adicionar uma linha conforme a figura.

Configuração de Health Check no .NET 5

Já no “Configure” adicione a linha indicada:

configuração de um Health Check no .NET 5

e pronto, ao executar a sua aplicação, você pode executar e ver se ela está de pé, chamando o endereço “health”.

Resultado:

Health Check .NET 6 — healthy

Mas isto só indica que ela está de pé, podemos também verificar se o acesso ao banco de dados está ok, para isto, pode-se implementar uma chamada validando se ele está ok, para isto, precisamos adicionar um pacote para o banco de dados específico:

AspNetCore.HealthChecks.SqlServer

Mas existem outros pacotes, como você pode ver na figura abaixo, para vários bancos de dados:

Bibliotecas Nuget para implementar Health Checks de Bancos de dados

Bom, importado o pacote, temos que inserir o código que o utiliza e assim montar o “healthcheck” de Sql Server.

Implementação de um Health Check de Banco de dados no .NET

Veja que com a adição de uma propriedade “AddSqlServer” agora vamos validar se o banco está de pé ou não.

Feito isto, também temos que ter a configuração no “appsettings” indicando a “connection string”, como esta é uma aplicação de teste, ainda não tínhamos a configuração montada para acessar o banco de dados.

Adição de String de conexão num arquivo AppSettings.Json

Pronto, agora temos a configuração feita, então vamos aos testes, primeiramente vou iniciar a aplicação com o banco de dados ativo.

Exemplo de execução de um Health Check no .NET

Agora vou desligá-lo, e testar novamente.

Exemplo de execução de um Health Check no .NET

Pronto, vemos que agora nossa API tem um “healthcheck” pronto para ser utilizado, isto será muito útil quando tiver um ambiente com múltiplos serviços, para que possa ser configurado o monitoramento.

Puxa, mas isso é .NET antes do 5, e se precisarmos fazer o mesmo numa API .NET 6 ? nosso program.cs é muito mais enxuto !

Simples….. É só implementar os mesmos elementos, porém adaptados ao padrão de “instruções de nível superior” implementadas no .NET 10.

Implementação de um Health Check no .NET 6

Pronto, agora temos os Health Checks que nossas aplicações tanto precisam prontos para serem utilizados !!

Gostou do artigo? clique no ícone👏e me siga para ver as próximas publicações !!

Referências:

--

--

Marcio Nizzola
Marcio Nizzola

Written by Marcio Nizzola

Microsoft MVP | Software Architect na CI&T | Prof. da Etec Itu | Membro Fundador da Comunidade Itu Developers.

No responses yet