OpenTelemetry (OTel) é um projeto de código aberto que fornece um padrão independente de fornecedor para coletar, processar e exportar dados de telemetria de sistemas distribuídos (como uma arquitetura de microsserviços). Essa abordagem simplificada e universal à observabilidade facilita a análise do desempenho e do comportamento do software pelos desenvolvedores, permitindo que diagnostiquem e depurem problemas em suas aplicações com mais facilidade. O OTel coleta os seguintes dados:

  • Rastreamentos – “Onde está o problema?”
  • Métricas – “Há algum problema?”
  • Logs – “Qual é o problema?”

O OTel não é uma linguagem de programação nem um produto. Este projeto de código aberto existe desde 2019 e atualmente é mantido pela Cloud Native Computing Foundation (CNCF).

Assista a este vídeo para saber como começar:

Tipos de dados gerados pelo OTel

Rastreamentos

Um trace registra os eventos que ocorrem durante uma operação, como o processamento de uma única solicitação. O trace é dividido em uma série de spans, cada um representando uma unidade de trabalho.

Por exemplo, o rastreamento de uma solicitação web pode incluir três spans:

  • Aceitar a solicitação
  • Consultando o banco de dados
  • Enviando uma resposta

Um trace divide um fluxo de dados, que pode incluir vários serviços, em uma série de partes ordenadas cronologicamente para ajudar você a entender com facilidade:

  • Todas as etapas que ocorreram em cada trecho
  • A ordem em que os blocos foram executados
  • Quanto tempo durou cada etapa
  • Metadados sobre cada etapa

Depois que o OTel gera os rastreamentos, a próxima etapa é exportá-los para um backend de rastreamento ou uma ferramenta de análise. O OTel oferece um conjunto de exportadores para backends populares, como Jaeger, Zipkin e AWS X‑Ray. Esses serviços fornecem ferramentas para analisar e visualizar dados de rastreamento.

Métricas

No OTel, as métricas são medições de aspectos específicos do comportamento de um sistema operacional e são coletadas ao longo do tempo como pares de chave-valor (conhecidos como rótulos de métricas). Os pares de chave-valor fornecem contexto sobre a medição ao longo do tempo. Por exemplo, uma métrica do tempo de resposta de um serviço web pode incluir rótulos para o código de status HTTP, o endpoint e o método HTTP. Todas as métricas também recebem um carimbo de data e hora, permitindo sua ordenação cronológica.

Logs

Os logs são o método mais antigo e comum para entender o que está acontecendo com um determinado serviço. Em geral, eles são gerados como texto e precisam ser analisados para produzir informações úteis. O suporte a logs no OTel ainda é experimental.

Para saber mais sobre o que nossos arquitetos de soluções descobriram ao comparar os conjuntos de recursos de observabilidade do OTel com os de outras ferramentas de observabilidade, consulte Integração do OpenTelemetry à arquitetura de referência de aplicativos modernos – um relatório de progresso em nosso blog.

Instrumentação do OTel

O OTel se integra a muitas linguagens de programação populares, bibliotecas e frameworks. O suporte em algumas linguagens é mais abrangente do que em outras. Por exemplo, as bibliotecas de instrumentação para JavaScript têm implementações autodeclaradas como “estáveis” tanto para rastreamento quanto para métricas, além de oferecerem um dos suportes mais estáveis para logs. Elas também disponibilizam uma opção de instrumentação automática que permite começar a receber rastreamentos sem adicionar nenhum código específico de instrumentação à lógica do seu serviço. Por outro lado, linguagens como Go têm suporte menos maduro para métricas e logs e não contam com recursos de instrumentação automática.

Objetivos de telemetria

Ao configurar a instrumentação de telemetria, é melhor começar com um conjunto de objetivos mais bem definidos do que simplesmente “enviar tudo e esperar obter insights”. Embora seja verdade que não é possível conhecer todo o potencial dos dados antes de visualizá-los, definir alguns requisitos mínimos ajuda a garantir a operação e a manutenção adequadas dos seus serviços.

Essas podem ser questões técnicas, como:

  • Quero saber quando meu serviço está sobrecarregado e precisa ser escalado.
  • Quero saber se meu serviço está reiniciando com frequência.

Mas também podem ser questões relacionadas ao produto e à experiência do usuário, como:

  • Quero que os usuários vejam novas mensagens no sistema em até cinco segundos.
  • Quero que as notificações sejam enviadas em até um minuto após o envio de uma mensagem.

Como exemplo do nosso tutorial Como usar o rastreamento do OpenTelemetry para entender seus microsserviços, você pode definir os seguintes objetivos principais:

  • Entenda todas as etapas pelas quais uma solicitação passa para concluir o novo fluxo de mensagens.
  • Verifique se o fluxo do usuário foi concluído com sucesso.
  • Tenha a certeza de que o fluxo do usuário está sendo executado de ponta a ponta em menos de cinco segundos (em circunstâncias “normais”).
  • Descubra se o serviço de notificação está processando o evento (enviado pelo serviço de mensagens) em tempo hábil.

Implementação do OTel

O OTel fornece aos desenvolvedores um conjunto único de interfaces de programação de aplicações (APIs), kits de desenvolvimento de software (SDKs) e bibliotecas de instrumentação que podem ser usados para instrumentar suas aplicações de maneira consistente e padronizada.

Como o formato dos dados produzidos pelo OTel é considerado um padrão do setor, diversas soluções de agregação e visualização de telemetria são compatíveis com ele. Você pode escolher uma solução local, como o Jaeger (conforme fizemos neste tutorial), ou optar por uma solução de Software como Serviço (SaaS), como o SumoLogic ou o SigNoz.

Para gerenciar os três tipos de telemetria, a única alternativa ao OTel é combinar várias ferramentas. Isso aumenta ainda mais a complexidade inerente à operação de uma arquitetura e uma infraestrutura de microsserviços.

O que é uma API no contexto do OTel?

As APIs definem os métodos, as funções e os protocolos usados pelos componentes de software para interagir entre si. As APIs do OTel definem um conjunto padrão de métodos e protocolos que os desenvolvedores podem usar para instrumentar suas aplicações e coletar dados de telemetria.

O que é um SDK no contexto do OTel?

SDKs são ferramentas de desenvolvimento de software fornecidas pelo autor de um padrão ou aplicativo que facilitam a criação de aplicações em conformidade com o padrão ou que interagem com o aplicativo. Normalmente, os SDKs incluem bibliotecas, exemplos de código, documentação e ferramentas para testes, depuração e ajuste de desempenho. O OTel fornece SDKs para rastreamento, métricas e gerenciamento de recursos.