APIs de telemetria em .NET

Concluído

Como você pode investigar o comportamento de um aplicativo para solução de problemas ou otimização de desempenho? Quanto mais dados você tiver sobre o que o aplicativo fez, mais fácil será diagnosticar problemas.

Imagine que você trabalha para um varejista de equipamentos para atividades ao ar livre. Suas equipes estão criando seus microsserviços e estão prontas para a fase de teste. Você deseja garantir que seu aplicativo nativo da nuvem emita telemetria sobre seu comportamento para que você possa diagnosticar problemas durante testes, preparação e produção.

Nessa unidade, você aprenderá sobre telemetria e os diferentes tipos de dados que podem ser registrados com ela.

O que é telemetria?

Na engenharia, telemetria é a medição de dados e sua transmissão automática para um sistema central de monitoramento. Por exemplo, um carro de corrida pode gravar dados sobre seu desempenho e enviá-lo de volta para o paddock onde os engenheiros o analisam. Da mesma forma, uma cápsula espacial pode registrar informações sobre as condições na cápsula e enviá-la de volta ao controle da missão. Nos últimos anos, tornou-se comum registrar e analisar dados de telemetria em sistemas mais comuns. Por exemplo, o aquecimento central pode enviar telemetria ao fabricante para ajudar na solução de problemas.

Se você estiver escrevendo aplicativos nativos da nuvem, a telemetria será útil quando:

  • Você está desenvolvendo microsserviços e quer saber se eles estão se comportando conforme o esperado.
  • Você está testando seu aplicativo e quer saber o que acontece quando ele falha no teste.
  • Você está testando seu aplicativo e quer saber como está o desempenho dele.
  • Você está dando suporte ao seu aplicativo em produção e deseja solucionar uma exceção ou otimizar o desempenho.

Podemos descrever um sistema que emite telemetria rica como:

  • Observável: um sistema observável é aquele que permite que você entenda seu comportamento de fora do sistema.
  • Instrumentado: Um sistema instrumentado é aquele que emite todos os dados que os desenvolvedores precisam para solucionar um problema.

OpenTelemetry é uma estrutura de observabilidade e um kit de ferramentas que você pode usar em seu aplicativo para criar, processar e emitir dados de telemetria. Você pode adicioná-lo facilmente a qualquer aplicativo .NET, incluindo microsserviços em um aplicativo nativo da nuvem. Ele emite dados em formatos que ferramentas comuns de observabilidade como Jaeger e Prometheus podem usar e analisar.

Pilares de observabilidade

A natureza dos aplicativos nativos da nuvem, que consistem em microsserviços distribuídos que usam tecnologias diferentes, pode dificultar a construção de código observável e devidamente instrumentado. Todas as equipes devem integrar a observabilidade em seus microsserviços, caso contrário, você pode achar que parte do aplicativo é difícil de monitorar e solucionar problemas.

Importante

Para garantir que todo o seu aplicativo seja observável, você deve garantir que todas as equipes de desenvolvimento considerem os três pilares da observabilidade em seus microsserviços: Registro, Métricas e Rastreamento.

Os três pilares da observabilidade são três tipos diferentes de registros que armazenam o comportamento das integrações de software para análise posterior:

  • Log: um registro de texto com carimbo de data/hora do que aconteceu durante o processamento de uma solicitação.
  • Métrica: uma medida de um serviço capturada durante o tempo de execução. Os valores das métricas podem ser agregados em estatísticas sobre um processo, incluindo:
    • Estatísticas de runtime do .NET, como a memória usada ou o número de coletas de lixo que ocorreram.
    • ASP.NET ou estatísticas do pacote NuGet, como o número de solicitações concluídas, durações da solicitação ou contagens de erros.
    • Estatísticas personalizadas específicas do seu aplicativo, como o número de pedidos feitos.
  • Rastreamento Distribuído: um registro de todas as unidades de trabalho, muitas vezes conhecidas como Spans, necessárias para lidar com uma solicitação individual. Em um aplicativo nativo de nuvem, muitos microsserviços e serviços de backup podem estar envolvidos em uma única solicitação, e um rastreamento distribuído mostrará todos eles enquanto colaboram para preparar a resposta.

Observação

No OpenTelemetry, todos os dados que não fazem parte de um rastreamento distribuído ou uma métrica são considerados um log; por exemplo, eventos.

Usando telemetria em .NET

O .NET possui tipos integrados para representar os três pilares:

  • ILogger: Essa interface fornece uma interface padrão que você pode usar ao registrar eventos de qualquer código .NET.
  • Metro: Você pode usar essa classe para criar um grupo de instrumentos, cada um medindo um valor associado ao desempenho ou comportamento do seu código. Por exemplo, você pode adicionar um instrumento que conte as vendas de um produto ou outro que meça o tempo que uma mensagem esperou em uma fila. O .NET também fornece muitas métricas integradas.
  • Atividade: Você pode usar essa classe para registrar as informações de rastreamento. Comece criando um ActivitySource objeto para o namespace e, em seguida, chame o StartActivity método para começar a gravar dados.

Você pode usar essas classes em qualquer código .NET. Na próxima unidade você verá como o .NET Aspire facilita o uso de classes OpenTelemetry em aplicativos nativos da nuvem.

Saiba mais