Monitore a “Saúde” de seus Microsserviços

Microsserviços podem se transformar, rapidamente, em um pesadelo para a área de operações. Diferente do que ocorre com um monolítico, onde há apenas uma grande aplicação por monitorar, com microsserviços podemos ter dezenas de processos com intrincadas redes de dependência.

Mais do que uma boa prática, é obrigação fornecermos mecanismos para apoiar o monitoramento. A forma mais prática é através de HealthCheck Endpoint.

Se tiver interesse em entender mais sobre microsserviços, recomendo que acesse o Guia de Conteúdo para Microsserviços deste site.

O que é um HealthCheck Endpoint?

Trata-se de um endpoint (exemplo http://meuservico/hc) que retorna quão estável está a saúde do serviço. Este endpoint deve fazer verificações como:

  • o status das conexões com banco de dados
  • o status do servidor host (processos, espaço em disco)
  • dependências com outros microsserviços

Este endpoint poderá ser consumido por aplicações especialitas utilizadas pela área de operações.

Implementando um  HealthCheck Endpoint no Aspnet Core

Sempre há a possibilidade de escrevermos tudo “na mão”, porém, nesse caso, recomendo a utilização de uma pequena biblioteca fornecida pela Microsoft para esse propósito. Ela ainda não está disponível como pacote nuget (será em breve), por isso, recomendo adicioná-la como submódulo em seu repositório git. Depois, basta adicionar a sua solução.

Feito isso, basta configurar o endpoint na aplicação:

namespace Playground.Web
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseHealthChecks("/hc")
                .UseStartup()
                .ConfigureAppConfiguration((builderContext, config) =>
                {
                    config.AddEnvironmentVariables();
                })
                .Build();
    }
}

.. e configurar as dependências.

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddFeatureFoldersSupport();

    services.AddHealthChecks(checks =>
        {
            checks.AddUrlCheck($"{_configuration["AuthenticationAuthority"]}/hc");
            checks.AddUrlCheck($"{_configuration["PlaygroundService"]}/hc");
        });

Pronto!

Nesse exemplo, muito simples, adiciono um Endpoint para validar a “sanidade” de minha aplicação e indico minhas dependências. Se algo der errado (por exemplo, o servidor de identidade parar de funcionar), então saberei que meu serviço também não está bem.

Concluindo

Healthchecking é um tema extenso e, como já afirmei, importante. Se estiver usando .net core, recomendo a leitura deste artigo que explica outras considerações e possibilidades na utilização da biblioteca que apresentei.

Capa Hush Naidoo

Compartilhe este insight:

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

Neste post, apresento o conceito de “Dívida Técnica” (não é débito, é dívida). Explico por que nem sempre elas são...
Eu sei que sou privilegiado, em última instância, por poder oferecer, através do meu trabalho, algo que a sociedade valoriza....
Mais uma vez, tive o prazer de compartilhar bons momentos com o pessoal do Canal.NET discutindo sobre arquitetura e tecnologia....
Tem coisas que a gente até sabe, mas ignora pela vaidade… Uma das features mais aclamadas do Microsoft Teams, para...
Compete ao arquiteto corporativo a responsabilidade de descrever, analisar e comunicar os diversos aspectos da arquitetura corporativa, bem como registrar...
If you ask me one tip to improve the performance of your applications, it would be: Design your objects to...
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

× Precisa de ajuda?