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 para os desenvolvedores analisar o desempenho e o comportamento do software, para que possam diagnosticar e depurar problemas em seus aplicativos com mais facilidade. A OTel coleta os seguintes dados:

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

OTel não é uma linguagem de programação ou 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 ver como começar:

Tipos de dados gerados pelo OTel

Rastreamentos

Um rastreamento registra os eventos que acontecem durante uma operação, como o tratamento de uma única solicitação. O traço é dividido em uma série de intervalos , cada um deles representando uma unidade de trabalho .

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

  • Aceitar a solicitação
  • Consultar o banco de dados
  • Enviar uma resposta

Um rastreamento divide um fluxo de dados que pode incluir vários serviços em uma série de blocos cronologicamente ordenados para ajudar você a entender facilmente:

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

Depois que o OTel tiver gerado os rastros, o próximo passo é exportá-los para um backend ou ferramenta de rastreamento para análise. A OTel fornece 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 para o tempo de resposta de um serviço web pode incluir rótulos para o código de status HTTP, o ponto de extremidade e o método HTTP. Todas as métricas também são registradas com data e hora, novamente para permitir a ordem cronológica.

Logs

Os logs são o método mais antigo e comum para obter informações sobre o que está acontecendo com um determinado serviço. Eles geralmente são produzidos como texto e devem ser analisados para gerar insights. O suporte para logs no OTel ainda é experimental.

Para saber mais sobre o que nossos arquitetos de soluções descobriram quando compararam os conjuntos de recursos de observabilidade no OTel com outras ferramentas de observabilidade, consulte Integrando o OpenTelemetry na Arquitetura de Referência de Aplicativos Modernos – Um Relatório de Progresso em nosso blog.

Instrumentação do OTel

O OTel integra-se com muitas linguagens de programação, bibliotecas e estruturas populares . O suporte em alguns idiomas é mais abrangente do que em outros. Por exemplo, as bibliotecas de instrumentação JavaScript têm implementações autodescritas como “estáveis” para rastreamento e métricas e alguns dos suportes mais estáveis para logs. Eles também fornecem uma opção de autoinstrumentação que permite que você comece a receber rastreamentos sem adicionar nenhum código específico de instrumentação à sua lógica de serviço. Por outro lado, linguagens como Go têm suporte menos maduro para métricas e logs e carecem de recursos de autoinstrumentação.

Metas de telemetria

Ao configurar a instrumentação de telemetria, é melhor começar com um conjunto de objetivos para instrumentação mais definidos do que “enviar tudo e esperar por insights”. Embora seja verdade que você não pode saber toda a extensão do que é possível até visualizar os dados, definir alguns requisitos mínimos ajuda a garantir a operação e a manutenção tranquilas dos seus serviços.

Estamos falando de preocupações técnicas, como:

  • Quero saber quando meu serviço está sob pressão e precisa ser dimensionado.
  • Quero saber se meu serviço está reiniciando com frequência.

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

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

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

  • Entender todas as etapas que uma solicitação envolve para realizar o novo fluxo de mensagens.
  • Verificar se o fluxo do usuário foi devidamente concluído.
  • Ter confiança de que o fluxo do usuário está sendo executado mais depressa do que cinco segundos de ponta a ponta (em circunstâncias “normais”).
  • Saber se o serviço notificador está processando o evento (despachado pelo serviço de mensagens) em tempo hábil.
Implementação do OTel

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

Como o formato dos dados produzidos pelo OTel é considerado um padrão da indústria, diversas soluções de agregação e visualização de telemetria o aceitam. Você pode escolher uma solução local, como a Jaeger (como fizemos neste tutorial), ou optar por uma solução de Software como Serviço (SaaS), como SumoLogic ou SigNoz .

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

O que é uma API no contexto do OTel?

As APIs definem os métodos, funções e protocolos usados pelos componentes de software para interagir entre si. As APIs OTel definem um conjunto padrão de métodos e protocolos que os desenvolvedores podem usar para instrumentar seus aplicativos 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 para os desenvolvedores criar aplicativos que estejam em conformidade com o padrão ou interajam com o aplicativo. Os SDKs geralmente incluem bibliotecas, amostras de código, documentação e ferramentas para teste, depuração e ajuste de desempenho. A OTel fornece SDKs para rastreamento , métricas e gerenciamento de recursos .