Fala galeros, como cês tão? Eu estou bem, e hoje aqui trazendo mais um artigo bem rápido, dessa vez sobre um tema que cresce cada dia mais.
Bom, vamos falar sobre monitoramento utilizando o health checks no ASP .NET Core, como esse pacote pode te ajudar a verificar a integridade e funcionamento do seu projeto!
…
Por Que Monitorar Sua Aplicação?
Hoje em dia com cenários e aplicações cada vez mais críticas precisamos ter a certeza e garantir para nosso usuário final que nossa aplicação está funcionando corretamente, ou seja, nosso software deve cumprir os princípios de DISPONIBILIDADE E CONFIABILIDADE.
Esses 2 são parte de um conjunto de princípios que indicam se um software está pronto ou não para produção.
Disponibilidade é basicamente garantir que o SLA (o tempo no qual está ativo) seja cumprido, ou seja, que nosso software esteja o máximo de tempo possível disponível.
Confiabilidade é garantir que nosso serviço seja confiável e íntegro, ou seja, o usuário final e outros serviços podem confiar no nosso software, seja na integridade dos dados ou na disponibilidade.
No ASP .NET Core temos um pacote que pode nos ajudar a verificar alguns pontos do nosso serviço, esse pacote se chama Microsoft.AspNetCore.Diagnostics.HealthChecks.
…
Como Funciona o Health Checks?
Basicamente você terá um endpoint /health (ou qualquer path relativo que você queira definir) onde ao realizar o GET a aplicação irá realizar uma série de verificações em cima da integridade do seu software.
O pacote do Health Checks já é nativo no ASP .NET Core, então na sua Startup basta usar:
Startup.cs
Nesse caso o que ele irá fazer, verificar se a aplicação está rodando corretamente, se o pipeline de execução e todos os middlewares estão funcionando e se não tem nenhum pacote faltando ou corrompido.
Ao acessar o endpoint /health e tudo estiver OK temos o seguinte status.
Caso tenha algo errado, teremos o seguinte.
OBS: Tanto para projetos MVC quanto para projetos API o retorno é o mesmo.
…
Verificando a Integração Com a Base de Dados
Uma coisa é fato, verificar somente se os componentes do projeto estão funcionando corretamente não é o suficiente, afinal caso seu banco de dados esteja fora ar sua aplicação não está confiável e muito menos disponível.
Por sorte a Microsoft desenvolveu uma extensão do Health Checks para verificar a integração com base de dados utilizando o Entity Framework Core, basta instalar o pacote:
Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore
E então adicionar ao pipeline a verificação de base de dados através do contexto!
Startup.cs
Nesse cenário além de realizar a verificação de integridade da aplicação ele também verifica se o banco está disponível, se a conexão entre aplicação e banco pode ser feita corretamente e principalmente se o banco está mapeado corretamente (entidade -> tabela) no contexto do EF Core.
Esse é um dos melhores recursos a se usar!
…
Segurança
Bom, não queremos deixar nosso endpoint de verificação de integridade público, afinal nem todo mundo deve ou pode saber se nossos serviços estão funcionando 100% corretamente, ainda mais serviços internos que não são expostos para o cliente.
Pensando nisso o Health Checks tem um middleware que implementa Autenticação e Autorização, ou seja, para consumir o endpoint, você DEVE estar autenticado e autorizado, seja com um cookie ou um token.
Para fazer isso é bem simples, basta adicionar o RequireAuthorization() na configuração de pipeline.
Startup.cs
Agora caso você tente acessar a rota de /health sem estar autenticado (cookie, Jwt ou outro middleware do ASP .NET Core) você receberá 401.
…
Verificações Customizadas
A coisa mais comum hoje em dia é nossa aplicação depender de outras aplicações e serviços nesses cenários precisamos criar verificações customizadas para verificar serviços externos no qual dependemos.
Outro ponto bem bacana do Health Checks e a possibilidade de criar suas próprias verificações de integridade, no exemplo a seguir irei fazer uma consulta para uma API de Skins de CSGO (um jogo de FPS que eu particularmente gosto muito) para ver se ela está funcionando.
Primeiro a gente precisa criar a verificação customizada.
SteamMarketplaceCheck.cs
Basicamente fiz um GET no endpoint de marketplace da Steam e caso esteja no ar (retorno 200) o middleware retorna Healthy, se estiver fora do ar retornará Unhealthy.
Para usar é só adicionar o middleware nos serviços.
Dessa forma ele irá chamar nossa verificação customizada quando acessarmos o /healthy.
O que eu acho mais bacana é que podemos adicionar quantas verificações quisermos!
…
Conclusão
Hoje vimos um recurso muito útil e importante que nos ajuda a monitorar e garantir integridade na nossa aplicação inteira, particularmente eu aplico o Health Checks em todos os meus projetos e ele já me salvou em diversas situações!
Espero que tenha ficado claro a importância do uso dessa ferramenta.
Agradeço a atenção e bons estudos!!!!!
Caso precise entrar em contato, me mande uma mensagem aqui.
Baixe o projeto clicando aqui.
AVISO
Minha nova plataforma já está em construção! irá conter todos os recursos dessa plataforma, cursos pagos e gratuitos, treinamentos, mentorias e muito mais, caso queira ter acesso antecipado (gratuito) e ser um dos primeiros a testar me mande um email em lucas.eschechola@outlook.com, obrigado!
…