OpenTelemetry: o que é, como funciona e como implementar

Protocolo Open Source OpenTelemetry

Durante anos, instrumentar uma aplicação para observabilidade significava escolher um fornecedor e aceitar o lock-in. O agente de APM do fornecedor A não conversava com o backend do fornecedor B. Migrar de plataforma exigia reescrever toda a instrumentação. Times que usavam múltiplas linguagens tinham múltiplos padrões incompatíveis de coleta de dados.

O OpenTelemetry foi criado para resolver esse problema de forma definitiva. É um projeto open source mantido pela CNCF (Cloud Native Computing Foundation) que define um padrão único e agnóstico de vendor para instrumentar aplicações e exportar dados de telemetria — métricas, logs e traces — para qualquer backend de observabilidade.

Neste guia técnico, você vai entender o que é OpenTelemetry, como funciona sua arquitetura, quais são os componentes principais e como implementar em projetos reais.

 

O que é OpenTelemetry?

OpenTelemetry (abreviado OTel) é um framework open source de observabilidade que fornece APIs, SDKs, agentes e um protocolo de exportação padronizados para coletar dados de telemetria de aplicações e infraestrutura. O projeto nasceu em 2019 da fusão de dois projetos anteriores — OpenTracing e OpenCensus — e se tornou rapidamente o padrão de facto da indústria para instrumentação.

A proposta central é simples: uma aplicação instrumentada com OpenTelemetry pode exportar seus dados para Datadog, Prometheus, Grafana Tempo, Jaeger, Elastic, New Relic ou qualquer outro backend compatível — sem alterar o código de instrumentação. Isso elimina o vendor lock-in e permite que a escolha da plataforma de observabilidade seja independente da estratégia de instrumentação.

O projeto é mantido pela CNCF, a mesma fundação que mantém Kubernetes e Prometheus, e conta com contribuições de Google, Microsoft, AWS, Datadog, New Relic e dezenas de outras empresas. Mais de 40 fabricantes de ferramentas de observabilidade suportam OpenTelemetry nativamente.

 
OpenTelemetry Protocol

 

Os três pilares do OpenTelemetry

O OpenTelemetry cobre os três tipos de dados de telemetria que compõem a observabilidade moderna.

 

Traces

O suporte a traces distribuídos foi o primeiro pilar implementado pelo OpenTelemetry, herdado diretamente do OpenTracing. Um trace representa a jornada completa de uma requisição por todos os serviços de um sistema distribuído.

O OTel propaga automaticamente o trace_id — um identificador único — por todos os serviços que a requisição atravessa, via headers HTTP (W3C TraceContext é o padrão), mensagens de fila ou gRPC. Isso permite que os traces de diferentes serviços e linguagens sejam correlacionados em uma única visão coerente no backend de observabilidade.

 

Métricas

A API de métricas do OpenTelemetry define instrumentos padronizados: Counter (valor que só cresce), Gauge (valor que varia), Histogram (distribuição de valores para percentis) e UpDownCounter. A exportação suporta formatos compatíveis com Prometheus, OTLP e outros backends.

O OpenTelemetry também define convenções semânticas — nomes e atributos padronizados para métricas comuns de serviços HTTP, bancos de dados, mensageria e runtimes. Isso garante que dashboards e alertas sejam reutilizáveis entre serviços e equipes.

 

Logs

O suporte a logs é o terceiro pilar, adicionado mais recentemente. O OTel não substitui as bibliotecas de logging existentes (Log4j, SLF4J, Winston, etc.) — ele as instrumenta automaticamente para injetar o trace_id e span_id do contexto atual em cada linha de log.

Essa injeção automática é o que viabiliza a correlação entre os três pilares: um alerta de métrica leva ao trace afetado que leva aos logs exatos daquele trace — sem nenhuma busca manual.

 

Arquitetura do OpenTelemetry

 

SDK e instrumentação automática

O OpenTelemetry fornece SDKs para todas as principais linguagens: Java, Python, Go, JavaScript/Node.js, .NET, Ruby, PHP, Rust, entre outras. Cada SDK inclui instrumentação automática para as bibliotecas mais populares — frameworks web (Express, Django, Spring), clientes HTTP, drivers de banco de dados — que geram spans, métricas e logs sem necessidade de modificar o código da aplicação.

Para casos específicos, a API permite adicionar instrumentação manual: criar spans customizados, adicionar atributos de contexto de negócio e registrar eventos relevantes para o domínio da aplicação.

 

OpenTelemetry Collector

O OTel Collector é um componente opcional mas altamente recomendado: um processo separado que recebe dados de telemetria das aplicações, processa (filtra, transforma, agrega) e exporta para um ou múltiplos backends.

A vantagem do Collector é desacoplar as aplicações dos backends de observabilidade: se a organização muda de Datadog para Elastic, só precisa reconfigurar o Collector — as aplicações permanecem inalteradas. Ele também permite adicionar processamento — como sampling de traces ou enriquecimento de atributos — sem alterar código da aplicação.

 

Protocolo OTLP

O OTLP (OpenTelemetry Protocol) é o protocolo de transporte definido pelo OTel para envio de dados de telemetria. Suporta gRPC e HTTP/Protobuf como transporte. É o formato nativo de exportação do OTel Collector e é suportado diretamente por todos os principais backends de observabilidade.

 

OpenTelemetry e a correlação entre pilares

O diferencial técnico mais importante do OpenTelemetry é a propagação automática de contexto que viabiliza correlação entre os três pilares. O mecanismo funciona assim: quando uma requisição chega ao serviço, o SDK extrai o trace_id do header, cria um span para aquela operação e armazena o contexto (trace_id + span_id) em um objeto acessível a toda a thread ou coroutine.

Quando a aplicação escreve um log ou registra uma métrica durante o processamento daquela requisição, o SDK injeta automaticamente o trace_id e span_id nos dados. O resultado: logs, métricas e traces da mesma requisição compartilham o mesmo identificador — tornando a navegação entre pilares trivial na plataforma de observabilidade.

Essa correlação é o que permite reduzir o MTTD e o tempo de diagnóstico em incidentes: do alerta de métrica ao trace afetado ao log de erro em segundos, sem busca manual entre ferramentas separadas.

 

Como implementar OpenTelemetry na prática

A implementação segue quatro etapas em qualquer linguagem.

O primeiro passo é adicionar as dependências do SDK e das instrumentações automáticas ao projeto. Na maioria das linguagens, isso é suficiente para começar a gerar traces e métricas das bibliotecas populares sem alterar o código da aplicação.

O segundo passo é configurar o exportador: para onde os dados serão enviados. Em ambiente de desenvolvimento, o exportador OTLP apontando para um Collector local é o padrão. Em produção, o Collector pode rotear para múltiplos backends.

O terceiro passo é validar a instrumentação automática e adicionar spans customizados para operações de negócio críticas que não são capturadas automaticamente — como chamadas a APIs externas específicas ou operações de domínio relevantes para diagnóstico.

O quarto passo é adotar as convenções semânticas nos atributos customizados, garantindo que os dados gerados pela sua aplicação sejam compatíveis com os dashboards e alertas padronizados da organização.

A referência técnica completa está em opentelemetry.io/docs, que mantém guias de início rápido por linguagem e a especificação completa das convenções semânticas. Para uma visão de como o OTel se encaixa no ecossistema cloud-native, a página do projeto na CNCF contextualiza sua maturidade e adoção.

 
Observabilidade

 

Conclusão

O OpenTelemetry resolveu o problema de fragmentação de instrumentação que por anos bloqueou a adoção de observabilidade em larga escala. Ao padronizar APIs, SDKs e o protocolo de exportação, ele eliminou o vendor lock-in e tornou possível instrumentar uma aplicação uma vez e exportar para qualquer backend.

Para times de SRE e DevOps, OpenTelemetry é hoje o ponto de partida recomendado para qualquer estratégia de observabilidade: ele une os três pilares — métricas, logs e traces — em um pipeline coeso com correlação automática. Para estruturar sua estratégia de instrumentação e observabilidade com OpenTelemetry, fale com nossos especialistas.

 

Perguntas Frequentes

O que é OpenTelemetry?
OpenTelemetry (OTel) é um projeto open source mantido pela CNCF que define um padrão único para instrumentar aplicações e exportar dados de telemetria — métricas, logs e traces — para qualquer backend de observabilidade. Nasceu em 2019 da fusão dos projetos OpenTracing e OpenCensus. Suportado por mais de 40 fabricantes, elimina o vendor lock-in ao separar a instrumentação da aplicação da escolha da plataforma de observabilidade.
Qual a diferença entre OpenTelemetry e OpenTracing?
OpenTracing foi um padrão anterior focado exclusivamente em rastreamento distribuído (traces). OpenTelemetry é seu sucessor e unificação: incorpora OpenTracing e OpenCensus, amplia o escopo para cobrir os três pilares (traces, métricas e logs) e adiciona o protocolo de exportação OTLP e o Collector. OpenTracing está descontinuado — OpenTelemetry é o padrão atual recomendado pela CNCF.
O que é o OpenTelemetry Collector?
O OTel Collector é um processo separado que recebe dados de telemetria das aplicações, processa (filtra, transforma, agrega) e exporta para um ou múltiplos backends. Desacopla as aplicações dos backends: se a organização muda de plataforma de observabilidade, só reconfigura o Collector — as aplicações permanecem inalteradas. Também permite adicionar sampling de traces e enriquecimento de atributos sem alterar código.
OpenTelemetry substitui o Prometheus?
Não — são complementares. Prometheus é um sistema de coleta e armazenamento de métricas com sua própria linguagem de consulta (PromQL). OpenTelemetry é um padrão de instrumentação e exportação. Uma aplicação instrumentada com OTel pode exportar métricas no formato Prometheus para ser coletada por um servidor Prometheus, ou usar OTLP para enviar direto a outro backend. Os dois coexistem na maioria das arquiteturas de observabilidade modernas.
Como OpenTelemetry correlaciona logs, métricas e traces?
O SDK do OpenTelemetry propaga automaticamente um trace_id único por toda a execução de uma requisição. Quando a aplicação escreve um log ou registra uma métrica durante aquele processamento, o SDK injeta automaticamente o trace_id nos dados. Isso faz com que logs, métricas e traces da mesma requisição compartilhem o mesmo identificador — permitindo navegar entre os três pilares diretamente na plataforma de observabilidade sem busca manual.

Trabalho há mais de 15 anos no mercado B2B de tecnologia e hoje atuo como Gerente de Marketing da OpServices e Líder em Projetos de Governança para Inteligência Artificial.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *