O que é observabilidade?

Concluído

Antes de mergulhar no código, vamos dar um passo atrás e falar sobre observabilidade. Você precisa ter ferramentas que o ajudem a entender o estado interno de um sistema com base no que é visível externamente.

Porquê implementar a observabilidade?

Há várias razões pelas quais a observabilidade é um aspeto crucial do desenvolvimento e melhoria de aplicativos nativos da nuvem:

  • Compreender o comportamento do sistema: a observabilidade fornece informações sobre o desempenho do seu aplicativo e onde ocorrem gargalos ou erros.
  • Depuração e solução de problemas: Quando surgem problemas, as ferramentas de observabilidade podem fornecer informações detalhadas sobre o que estava acontecendo no sistema no momento do problema.
  • Melhoria contínua: A observabilidade não serve apenas para identificar e resolver problemas, mas também para a melhoria contínua. Ao monitorar o desempenho do sistema ao longo do tempo, você pode identificar oportunidades para otimizar seu código, melhorar o desempenho do sistema e melhorar quantitativamente a experiência para seus usuários.
  • Deteção proativa de problemas: com as ferramentas de observabilidade corretas, muitas vezes você pode detetar problemas antes mesmo que seus usuários os vejam.

Implementar a observabilidade em aplicativos nativos da nuvem não é apenas uma prática recomendada, é uma necessidade para manter, otimizar e melhorar continuamente seus aplicativos. Ele capacita os desenvolvedores a fornecer aplicativos confiáveis e de alto desempenho e fornece os insights necessários para conduzir a tomada de decisões informadas.

Os três pilares da observabilidade

Existem três pilares principais da observabilidade:

  • Logs: os logs fornecem registros detalhados de eventos que ocorrem em um aplicativo ou sistema. Em seu aplicativo, você pode usar Microsoft.Extensions.Logging a infraestrutura para registrar eventos.
  • Métricas: As métricas referem-se a medições numéricas e contadores que fornecem informações sobre o desempenho e a integridade de um sistema. Os exemplos incluem taxas de solicitação, tempos de resposta, uso de CPU/memória e taxas de erro. No seu aplicativo, você pode ter medidas específicas que precisa acompanhar.
  • Rastreamento distribuído: esse processo envolve o rastreamento de uma solicitação à medida que ela se propaga por todos os microsserviços em seu aplicativo nativo da nuvem. Cada serviço registra dados de rastreamento, como IDs de solicitação que permitem correlacionar eventos entre serviços. O rastreamento distribuído também é útil para depurar problemas de desempenho e erros em sistemas complexos.

Juntos, esses três pilares fornecem observabilidade abrangente em um sistema.

Fontes de dados para telemetria

No aplicativo nativo da nuvem da sua empresa, há várias fontes de telemetria que você pode optar por coletar:

  • Logs de aplicativos: os aplicativos geram logs que fornecem informações detalhadas sobre seu funcionamento e erros, se ocorrerem. O registro em log é uma fonte rica de dados de telemetria.
  • Bancos de dados: os bancos de dados podem fornecer dados de telemetria sobre as consultas que processam, os tempos de execução e quaisquer erros que ocorram.
  • Solicitações e respostas HTTP: As solicitações e respostas HTTP entre seus microsserviços fornecem dados de telemetria ricos e valiosos. Esses dados incluem os cabeçalhos de solicitação e resposta, conteúdo do corpo, códigos de status e informações de tempo.
  • Dados de desempenho do lado do cliente: em aplicativos nativos da nuvem com um front-end, você pode coletar os dados de desempenho do lado do cliente. Esses dados podem incluir visitas à página, tempos de carregamento e tempos de interação da interface do usuário.
  • Métricas de infraestrutura: se seu aplicativo estiver hospedado em um ambiente de nuvem, você poderá coletar métricas de infraestrutura, como uso de CPU, uso de memória, tráfego de rede e operações de E/S de disco.

Ao coletar e analisar esses dados de telemetria, você pode obter informações valiosas sobre o desempenho e a integridade do seu aplicativo.

Implementar observabilidade

Para adicionar observabilidade ao seu aplicativo nativo da nuvem, siga estas etapas:

  • Adicionar registo.
  • Habilite métricas e defina métricas personalizadas para capturar.
  • Habilite o rastreamento distribuído com OpenTelemetry e Zipkin.
  • Instrumente seu aplicativo, novamente com OpenTelemetry e adicionando telemetria ao seu código.
  • Analise os dados de telemetria com Prometheus, Grafana ou Application Insights.

Introdução ao OpenTelemetry

Como o OpenTelemetry ajuda a adicionar observabilidade ao seu aplicativo e por que há um suporte tão profundo para ele no .NET? OpenTelemetry é uma estrutura de observabilidade de código aberto. Ele fornece uma maneira padrão e independente do fornecedor para gerar dados de telemetria.

O OpenTelemetry padroniza a forma como os dados de telemetria são coletados e transmitidos para plataformas back-end. Ele preenche lacunas de visibilidade, fornecendo um formato comum de instrumentação em todos os seus microsserviços. Você não precisa reinstrumentar o código ou instalar diferentes agentes proprietários toda vez que uma plataforma de back-end muda.

Por ser um padrão aberto, ele suporta muitas outras ferramentas fora do .NET. O OpenTelemetry está configurado para usar extensões que permitem que os exportadores criem dados de telemetria para todas as diferentes ferramentas. Isso significa que você pode usar as mesmas ferramentas para monitorar microsserviços, independentemente do idioma em que eles estão escritos.

O OpenTelemetry ajuda você a coletar e monitorar todos os três pilares da observabilidade: logs, métricas e rastreamentos. Você verá como fazer essas tarefas nas unidades a seguir.