O que é OpenTelemetry

OpenTelemetry é um projeto de código aberto para instrumentar aplicações e transportar sinais de observabilidade. Na prática, ele ajuda a coletar traces, métricas e logs com APIs e formatos que não dependem de um único fornecedor.

O projeto nasceu da união de iniciativas como OpenTracing e OpenCensus e passou a ser desenvolvido no ecossistema da Cloud Native Computing Foundation. A ideia central é separar a instrumentação da aplicação do destino onde os dados serão analisados.

Ele está em alta porque sistemas modernos têm vários serviços, filas, bancos e provedores de nuvem. O problema é que coletar tudo sem critério aumenta o volume, a cardinalidade e a conta. OpenTelemetry resolve a parte técnica da coleta, mas a estratégia de uso continua sendo responsabilidade da equipe.

Como funciona

A aplicação usa um SDK ou uma biblioteca de instrumentação para criar sinais. Um trace acompanha uma operação completa, uma métrica resume comportamento ao longo do tempo e um log registra eventos detalhados. Esses sinais podem compartilhar contexto, como o identificador de uma requisição.

O OpenTelemetry Collector funciona como uma camada intermediária. Ele recebe dados por protocolos suportados, aplica filtros e processadores e envia o resultado para um ou mais backends. Isso evita colocar regras de cada fornecedor dentro do código da aplicação.

O fluxo mais saudável é instrumentar o mínimo necessário, enviar para um collector e só então decidir o que deve ser armazenado. Amostragem, limites de atributos, retenção e roteamento precisam fazer parte do desenho desde o começo.

ATENÇÃO
Coletar não é observar

Ter milhares de eventos não garante diagnóstico melhor. Um conjunto menor de sinais bem nomeados costuma ser mais útil do que dados sem contexto e sem limite.

Principais recursos

O primeiro recurso é a instrumentação. Bibliotecas oficiais e contribuições da comunidade permitem capturar operações de frameworks, clientes HTTP, bancos e filas. Quando a automação não basta, a equipe pode criar spans e métricas manuais para as partes críticas do negócio.

O segundo recurso é o contexto distribuído. Um trace pode ligar a requisição recebida por uma API à chamada de outro serviço e ao acesso ao banco. Isso reduz o tempo gasto tentando reconstruir uma falha olhando para telas e logs isolados.

O terceiro recurso é a flexibilidade de transporte. Com OTLP e o Collector, a aplicação pode continuar usando a mesma forma de emissão enquanto a equipe troca, combina ou reorganiza os destinos de análise.

  • Traces: mostram o caminho e a duração de uma operação.
  • Métricas: ajudam a acompanhar volume, erro, latência e saturação.
  • Logs: registram detalhes úteis para investigação e auditoria.
  • Processadores: filtram, agrupam ou transformam dados antes do envio.

Como começar: instalação e acesso

Comece escolhendo um caso pequeno, como medir a latência de uma API de checkout. Defina quais sinais realmente respondem às perguntas da equipe e qual backend receberá os dados. Não instrumente toda a empresa antes de validar o fluxo.

Depois, configure um Collector com um receiver OTLP, um processador de lote e um exporter de teste. A configuração abaixo é um ponto de partida local para receber dados e inspecionar a saída no terminal.

receivers:
  otlp:
    protocols:
      grpc:
      http:
processors:
  batch:
exporters:
  debug:
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [debug]

Salve o arquivo como otel-collector.yaml e execute o Collector com a imagem oficial. Em seguida, aponte o SDK da aplicação para as portas OTLP do ambiente local e gere uma requisição de teste. Consulte a documentação oficial para ajustar o comando à sua plataforma e à versão instalada.

Docker run --rm -p 4317:4317 -p 4318:4318 -v ${PWD}/otel-collector.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest --config /etc/otelcol-contrib/config.yaml

Exemplo prático

Imagine uma loja virtual em que o cliente reclama de lentidão no pagamento. A API responde rápido em alguns casos, mas a confirmação depende de um serviço de estoque, de um gateway e de uma fila. Um trace bem definido permite enxergar essa sequência em uma única operação.

Na aplicação, use atributos estáveis como service.name, ambiente e rota. Evite colocar e-mail, token, conteúdo do carrinho ou identificadores de alta variedade em cada span. O objetivo é explicar o comportamento sem transformar dados sensíveis em telemetria.

No Collector, aplique um processador de lote e uma política de amostragem adequada ao ambiente. Mantenha mais detalhes durante uma investigação controlada e uma coleta menor no caminho normal. Para erros e operações lentas, uma regra específica pode preservar sinais importantes sem guardar todas as requisições.

PRO
Comece pela pergunta

Antes de criar um novo span, escreva a pergunta que ele deve responder. Se a equipe não sabe como usará o dado, o evento provavelmente ainda não está pronto para produção.

Comparação com alternativas

Agentes proprietários podem oferecer instalação rápida e uma experiência integrada. Eles fazem sentido quando a empresa já escolheu um fornecedor e quer reduzir o trabalho operacional. O custo é aceitar maior dependência das APIs e convenções daquela plataforma.

Bibliotecas específicas de cada fornecedor também continuam válidas em alguns cenários. Elas podem expor recursos exclusivos, mas dificultam uma futura troca de backend e espalham decisões de observabilidade pelo código da aplicação.

Logs estruturados sozinhos resolvem parte do diagnóstico, especialmente em serviços simples. Quando há chamadas entre componentes, traces e métricas complementam o log e ajudam a distinguir uma falha local de uma fila congestionada ou de uma dependência lenta.

  • OpenTelemetry: melhor quando você quer portabilidade e uma camada comum.
  • Agente proprietário: melhor quando a integração pronta vale mais do que a flexibilidade.
  • Logs estruturados: melhor para aplicações pequenas e eventos de negócio bem definidos.
  • Monitoramento simples: melhor para acompanhar disponibilidade e recursos sem diagnóstico distribuído.

Pontos positivos e limitações

O principal ponto positivo é a neutralidade. A aplicação pode emitir sinais para uma camada comum, enquanto a equipe escolhe onde armazenar e consultar esses dados. Isso facilita testes, mudanças de arquitetura e cenários híbridos.

Outro benefício é a padronização. Nomes de serviços, atributos, propagação de contexto e formatos consistentes tornam a investigação menos dependente de uma pessoa que conhece todos os detalhes do sistema.

A limitação é a complexidade inicial. É preciso decidir nomenclatura, sampling, segurança, retenção e ownership. Se o Collector for tratado como uma caixa preta ou se cada time instrumentar de um jeito, a plataforma pode aumentar o ruído em vez de reduzi-lo.

CUIDADO
Cuidado com cardinalidade

Não use valores únicos, como identificadores de usuário ou URLs completas, como dimensões de métricas. Isso pode multiplicar séries e tornar armazenamento e consulta mais caros.

Casos de uso reais

Para uma equipe de backend, traces ajudam a separar a latência da própria API da latência de uma dependência. Métricas de erro e saturação completam o quadro e tornam o alerta mais acionável.

Para uma equipe de suporte, a correlação entre trace e log reduz a troca de mensagens com o cliente. Em vez de pedir capturas de várias telas, o suporte pode encaminhar um identificador técnico para a equipe investigar a operação correta.

Para uma empresa de e-commerce, a observabilidade ajuda a acompanhar o caminho de busca, carrinho, pagamento e confirmação. O ganho não está em registrar tudo, mas em localizar qual etapa afeta conversão ou aumenta o volume de atendimento.

Para uma operação em nuvem, o Collector centraliza regras de envio e reduz alterações repetidas em cada serviço. Isso é útil quando há mais de um ambiente, região ou fornecedor de armazenamento.

Dicas e boas práticas

Padronize nomes de serviços, ambientes e rotas antes de criar painéis. Uma convenção simples evita que o mesmo componente apareça com vários nomes e que alertas sejam duplicados.

DICA
Filtre cedo

Remova no Collector os sinais que não têm valor operacional. Filtrar antes do envio reduz tráfego, armazenamento e o trabalho de quem consulta os dados.

Separe telemetria de produção, homologação e desenvolvimento. Use retenção e sampling diferentes para cada ambiente e deixe claro quem pode acessar dados potencialmente sensíveis.

DICA
Proteja os atributos

Crie uma lista de campos proibidos e revise instrumentações automáticas. Tokens, senhas, dados pessoais e conteúdo de requisição não devem aparecer por acidente nos sinais.

Meça o custo da observabilidade como parte do produto. Acompanhe volume de eventos, tamanho médio, séries ativas e retenção. Quando a conta subir, investigue a causa no desenho da telemetria antes de apenas desligar alertas.

PRO
Teste uma mudança

Altere uma regra de sampling ou um conjunto de atributos em um serviço pequeno. Compare qualidade do diagnóstico e volume antes de expandir para toda a plataforma.

Vale a pena usar?

OpenTelemetry vale a pena para equipes que precisam entender aplicações distribuídas e querem reduzir a dependência de um único fornecedor. Ele oferece uma base comum, mas não elimina as decisões de arquitetura e operação.

Para um projeto pequeno com uma única API, métricas, logs estruturados e um monitor de disponibilidade podem ser suficientes no começo. Adotar o padrão completo sem uma pergunta concreta pode gerar trabalho sem retorno proporcional.

O próximo passo recomendado é escolher uma rota crítica, instrumentar apenas o necessário e acompanhar o resultado por alguns dias. Se o trace ajudar a responder uma pergunta real e o volume permanecer controlado, expanda a convenção gradualmente.