APIs de telemetria no .NET
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 trabalha para um retalhista de equipamento exterior. Suas equipes estão construindo seus microsserviços, prontos para a fase de testes. Você deseja garantir que seu aplicativo nativo da nuvem emita telemetria sobre seu comportamento para que você possa diagnosticar problemas durante testes, preparo e produção.
Nesta unidade, você aprenderá sobre telemetria e os diferentes tipos de dados que você pode gravar com ela.
O que é telemetria?
Em 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á-los de volta para o paddock, onde os engenheiros os analisam. Da mesma forma, uma cápsula espacial pode gravar informações sobre as condições da cápsula e enviá-las 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 resoluçã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 eles falham em um teste.
- Você está preparando seu aplicativo e quer saber como eles estão funcionando.
- 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 entender seu comportamento de fora dele.
- Instrumentado: um sistema instrumentado é aquele que emite todos os dados de que os desenvolvedores precisam para solucionar um problema.
OpenTelemetry é uma estrutura de observabilidade e 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 formas que ferramentas comuns de observabilidade como Jaeger e Prometheus podem usar e analisar.
Pilares da observabilidade
A natureza dos aplicativos nativos da nuvem, que consistem em microsserviços distribuídos que usam tecnologias díspares, pode dificultar a criaçã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 seu 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: Logging, Metrics e Tracing.
Os três pilares da observabilidade são três tipos diferentes de registros que armazenam o comportamento de 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 medição de um serviço capturado em tempo de execução. Os valores métricos podem ser agregados em estatísticas sobre um processo, incluindo:
- Estatísticas do .NET Runtime, como a memória usada ou o número de coletas de lixo que ocorreram.
- ASP.NET ou estatísticas de pacotes NuGet, como o número de solicitações concluídas, durações de solicitações ou contagens de erros.
- Estatísticas personalizadas específicas do seu aplicativo, como o número de pedidos feitos.
- Distributed Trace: um registo de todas as unidades de trabalho, muitas vezes referidas como Spans, necessárias para lidar com um pedido individual. Em um aplicativo nativo da nuvem, muitos microsserviços e serviços de suporte podem estar envolvidos em uma única solicitação e um rastreamento distribuído mostraria todos eles enquanto colaboram para preparar a resposta.
Nota
No OpenTelemetry, qualquer dado que não faça parte de um rastreamento distribuído ou de uma métrica é considerado um log, por exemplo, eventos.
Usando telemetria no .NET
O .NET tem tipos internos para representar os três pilares:
- ILogger: Esta interface fornece uma interface padrão que você pode usar quando você o que registrar eventos de qualquer código .NET.
- Meter: Você pode usar essa classe para criar um grupo de instrumentos, cada um dos quais mede 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 internas.
- Atividade: Você pode usar essa classe para registrar as informações de rastreamento. Comece criando um
ActivitySource
objeto para seu namespace. Em seguida, chame o método para começar aStartActivity
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.
Mais informações
- Telemetria do .NET Aspire
- Observabilidade .NET com OpenTelemetry
- Quais ferramentas de diagnóstico estão disponíveis no .NET Core?