O que é observabilidade?

Concluído

Antes de se aprofundar 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.

Por que implementar a observabilidade?

Há vários motivos pelos quais a observabilidade é um aspecto crucial do desenvolvimento e melhoria de aplicativos nativos de nuvem:

  • Noções básicas sobre o comportamento do sistema: a observabilidade fornece insights sobre como seu aplicativo está sendo executado 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 é apenas para identificar e resolver problemas, mas também é usada para 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.
  • Detecção proativa de problemas: com as ferramentas de observabilidade corretas em vigor, muitas vezes você pode detectar problemas antes mesmo de seus usuários vê-los.

Implementar a observabilidade em aplicativos nativos de 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 impulsionar a tomada de decisões informada.

Os três pilares da observabilidade

Há três pilares principais de observabilidade:

  • Logs: os logs fornecem registros detalhados de eventos que ocorrem em um aplicativo ou sistema. Em seu aplicativo, você pode usar a infraestrutura Microsoft.Extensions.Logging para registrar eventos.
  • Métricas: as métricas referem-se a medidas numéricas e contadores que fornecem insights 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. Em seu aplicativo, você pode ter medidas específicas que precisa acompanhar.
  • Rastreamento distribuído: esse processo envolve o rastreamento de uma solicitação conforme ela se propaga por todos os microsserviços em seu aplicativo nativo de 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 uma observabilidade abrangente em um sistema.

Fontes de dados para telemetria

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

  • Logs de aplicativo: os aplicativos geram logs que fornecem informações detalhadas sobre sua operação 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 os erros que ocorrem.
  • Solicitações e respostas HTTP: as solicitações HTTP e as respostas entre seus microsserviços fornecem dados de telemetria avançados e valiosos. Esses dados incluem os cabeçalhos de solicitação e resposta, corpo da mensagem, códigos de status e informações de temporização.
  • Dados de desempenho do lado do cliente: em aplicativos nativos de nuvem com um front-end, você pode coletar os dados de desempenho do lado do cliente. Esses dados podem incluir visualizações de página, tempos de carregamento e tempos de interação com a interface.
  • Métricas de infraestrutura: se o aplicativo estiver hospedado em um ambiente de nuvem, você poderá coletar métricas de infraestrutura, como uso da 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 aplicativo.

Implementar observabilidade

Para adicionar observabilidade ao seu aplicativo nativo de nuvem, execute estas etapas:

  • Adicionar registro.
  • Habilite as métricas e defina métricas personalizadas a serem capturadas.
  • 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á suporte tão profundo para ele no .NET? OpenTelemetry é uma estrutura de observabilidade de software livre. Ele fornece uma maneira padrão e independente do fornecedor de gerar dados de telemetria.

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

Como é um padrão aberto, ele dá suporte a 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 da linguagem em que estão escritos.

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