Introdução ao OpenTelemetry para iniciantes

Vamos discutir o OpenTelemetry – uma forma padrão neutra de fornecedor para coletar dados de telemetria.

Oferecer melhor observabilidade em uma aplicação é um grande desafio para qualquer desenvolvedor, pois eles precisam capturar os dados de telemetria da aplicação. O dicionário Cambridge define a telemetria como a ciência ou processo de coletar informações sobre objetos que estão distantes e enviar as informações para algum lugar eletronicamente.

Por exemplo, um único clique ou sessão de um usuário em um site gera muitas solicitações e fluxo de rastreamento entre redes, microsserviços, bancos de dados etc.

OpenTelemetry é uma plataforma de observabilidade, um conjunto de componentes bem fatorados que podem ser usados ​​juntos ou à la carte. Além disso, os desenvolvedores de estruturas e bibliotecas que todos usamos hoje agora têm uma maneira padrão de inserir dados de telemetria nessas bibliotecas e estruturas, dando aos usuários finais muitos insights prontos para uso sobre o que essas estruturas estão fazendo sob o capô .

Para entender o OpenTelemetry, primeiro você precisa saber o que é rastreamento distribuído.

O que é rastreamento distribuído?

À medida que nossos aplicativos se tornam mais complexos e mais serviços estão envolvidos no atendimento ao tráfego do usuário e na conclusão das transações, torna-se cada vez mais crítico entender como as solicitações atravessam nossos serviços e como cada serviço contribui para a latência geral. Isso é o que o rastreamento distribuído faz. Ele captura a latência das solicitações do usuário e quanto tempo leva cada microsserviço no caminho para retornar uma resposta.

Quando chega uma requisição do usuário, queremos criar um trace, ou seja, o total de informações que descrevem como nosso sistema responde a uma requisição do usuário. Os rastreamentos são compostos de spans, e cada span significa um par específico de solicitação e resposta envolvido no atendimento de uma solicitação do usuário. O intervalo pai descreve a latência observada pelo usuário final. E o child span é usado para entender como um determinado serviço no sistema distribuído foi chamado e respondeu com suas informações de latência.

O que é OpenTelemetry?

OpenTelemetry é um projeto de código aberto hospedado pelo CNCF que fornece uma maneira padrão de gerar dados de telemetria. Foi criado pela fusão de Open Tracingum padrão para gerar dados de rastreamento e OpenCensusque era um padrão para gerar dados de métricas.

  Conquiste mais clientes com software de marketing e vendas

O OpenTelemetry oferece um único conjunto de APIs, agentes, serviços coletores e bibliotecas para capturar rastreamentos e métricas distribuídas de seu aplicativo. O OpenTelemetry padroniza como coletamos dados de telemetria e os enviamos para um back-end de sua escolha. Isso fornece um caminho neutro de fornecedor para a instrumentação e oferece a flexibilidade de alterar seu back-end sem instrumentar seu código novamente.

Assim, você pode instrumentar seus aplicativos usando um agente independente de fornecedor enquanto ainda envia suas métricas e rastreamentos para um fornecedor de SaaS como o Datadog. Então, se você quiser mudar de fornecedor (por exemplo, de Datadog para Dynatrace), poderá fazê-lo sem alterar o código do aplicativo.

O projeto OpenTelemetry visa fornecer um único conjunto de bibliotecas de APIs e agentes para capturar métricas e rastreamentos distribuídos de seus aplicativos. Isso se aplica a muitos idiomas e plataformas. O projeto OpenTelemetry também inclui um serviço coletor opcional e possui um repositório dedicado para especificações. Para ser claro, OpenTelemetry não é Jaeger ou Prometheus, que são back-ends observáveis. Mas ajuda na exportação de dados para back-ends comerciais e de código aberto.

Abaixo estão os recursos que o OpenTelemetry oferece:

  • Padronização na coleta de dados de telemetria que as organizações podem seguir, o que facilita a movimentação entre fornecedores
  • Uma convenção semântica de padrão aberto independente de fornecedor para o processo de coleta de dados
  • Coletor que pode ser implantado como um agente ou gateways ou de várias maneiras diferentes
  • Suporta vários formatos de propagação de contexto para migração
  • Uma solução de ponta a ponta para gerar, emitir, coletar, processar e exportar dados de telemetria
  • Facilidade para enviar dados para vários destinos em paralelo com controle total sobre eles

Componentes OpenTelemetry

Abaixo estão os principais componentes do OpenTelemetry:

  • Proto: Este componente é usado para definir coletores, bibliotecas de instrumentação, etc., que são tipos de interface independentes de linguagem para OpenTelemetry.
  • Coletor: Os coletores são usados ​​para receber, processar e exportar dados de telemetria. Essa implementação de coletores deve ser independente do fornecedor. Por padrão, todos os dados de telemetria são exportados por bibliotecas de instrumentação neste local.
  • Especificação: Este componente descreve os requisitos e expectativas da implementação em diferentes linguagens que consistem em APIs, SDKs e dados. A API gera os dados de telemetria, processamento e recursos de exportação para implementar as APIs fornecidas pelos SDKs. Os dados têm as convenções semânticas para oferecer suporte a todos os tipos de fornecedores sem alterar nenhum código.
  • Bibliotecas de instrumentação: estão disponíveis em vários idiomas como parte do projeto OpenTelemetry. Essas bibliotecas são usadas para fornecer capacidade de observação para outras bibliotecas para tornar todos os aplicativos observados fazendo chamadas para a API OpenTelemetry.
  Como alterar facilmente as configurações do sistema Ubuntu com o Ubunsys

Arquitetura OpenTelemetry

Imagem da Nova Relíquia

No alto nível, OpenTelemetry consiste em três partes principais:

  • Um conjunto de APIs para instrumentar aplicativos, bibliotecas e estruturas.
  • O SDK implementa APIs.
  • Um coletor opcional pode ingerir, agregar e exportar dados de telemetria sempre que você precisar.

O objetivo da API é permitir a criação de instrumentação para bibliotecas e o código do aplicativo. A API tem quatro seções principais: rastreamento, medidores, um contexto compartilhado e convenções semânticas.

  • A API Tracer oferece suporte à criação, anotação e conclusão de períodos.
  • A API do medidor consiste em vários instrumentos métricos. Exemplos desses instrumentos são observadores, registradores de valor, contadores.
  • Você pode rastrear e executar o contexto de extensão habilitando a API de contexto e propagando esse contexto dentro e fora do seu sistema.
  • Todas as diretrizes e regras para nomenclatura principal, como nomear os spans, atributos, rótulos e instrumentos métricos, estão presentes nas convenções semânticas. Essas convenções são implementadas para garantir consistência entre diferentes implementações de linguagem e para instrumentações externas.

Em um contexto compartilhado, a implementação do contexto fica entre o rastreador e o medidor e permite que todos os registros de métricas não-observadores ocorram no contexto de um span em execução. Um recurso que permite que os SDKs capturem extensões exemplares para valores de métrica. Você pode customizar o contexto com propagadores, que permitem a propagação do contexto de span para dentro e para fora do sistema que permite o verdadeiro rastreamento distribuído.

O Collector é uma parte essencial da arquitetura OpenTelemetry. É um serviço autônomo que pode receber, processar e exportar dados de telemetria de várias fontes, incluindo OpenCensus, Zipkin, Jaeger e o protocolo OpenTelemetry. Usando coletores, você pode exportar spans e métricas para vários fornecedores e sistemas de telemetria de código aberto.

  Como criar toques grátis diretamente no seu iPhone

A arquitetura OpenTelemetry oferece uma solução de telemetria completa pronta para uso. Você também pode fazer a personalização usando vários pontos de extensão conforme a necessidade.

Como funciona o OpenTelemetry?

Dentro de cada serviço em sua implantação, instale o cliente OpenTelemetry. O cliente é o SDK; o SDK, por sua vez, possui uma API. Suas estruturas e bibliotecas de aplicativos usam essa API de instrumentação para descrever o trabalho que estão fazendo. O SDK então exporta as observações coletadas para um serviço de pipelining de dados chamado Collector.

OpenTelemetry tem seu próprio protocolo de dados, OTLP, mas o coletor pode traduzir OTLP em vários formatos, incluindo Zipkin, jaegere Prometeu. Notavelmente, o OpenTelemetry não fornece seu próprio back-end ou ferramenta de análise; isso ocorre porque é um esforço de padronização no coração do OpenTelemetry. O objetivo é criar uma linguagem universal para descrever as operações de computadores em um ambiente de nuvem. O objetivo não é padronizar como analisamos esses dados. Em vez disso, esperamos que o OpenTelemetry ajude a impulsionar o mundo da observabilidade, permitindo que novas ferramentas de análise sejam iniciadas rapidamente sem reconstruir todo esse ecossistema de software de telemetria.

Quando você envia muitos dados pelo sistema, há muito a considerar. Felizmente, a OpenTelemetry pensou em todas as coisas e tem soluções para cada uma dessas questões. Em primeiro lugar, o OpenTelemetry é flexível e lida com vários formatos de propagação de contexto. Isso significa que mesmo havendo um padrão, ainda existe a opção de escolha dentro desse padrão. Portanto, se você estiver usando algo como o formato de contexto de rastreamento w3c ou a propagação b3, esses são padrões diferentes dentro do padrão que permitem que seus serviços conectem os pontos.

Conclusão

O OpenTelemetry coleta uma variedade de observações, sendo as métricas de rastreamento distribuídas e os recursos do sistema os mais importantes. Em vez de tratá-los como sinais separados, o OpenTelemetry os entrelaça e fornece indexação e contexto que permitem agregar e indexar todos esses sinais no back-end.

Além da coleta de dados, o OpenTelemetry fornece um recurso de processamento e pipeline de dados que permite alterar formatos de dados, manipular seus dados e todas as ferramentas necessárias para criar um pipeline de telemetria robusto em um sistema moderno.

Então, isso era tudo sobre OpenTelemetry, vá em frente e experimente esta ferramenta.