DEV Community

Cover image for Conceitos OpenTelemetry
Ezzio Moreira
Ezzio Moreira

Posted on • Edited on

Conceitos OpenTelemetry

Em 2019, houve a fusão entre dois projetos, OpenCensus e OpenTracing que resultou no OpenTelemetry. Os dois projetos queriam resolver um problema comum, definir um padrão para instrumentação, coleta e envio de dados de telemetria para um backend de observabilidade.

OpenTracing é composto por uma especificação de APIs, permitindo enviar dados de telemetria para um vendor de observabilidade.
OpenCensus incluía um conjunto de bibliotecas suportada por diversas linguagens para instrumentar código e enviar dados para o backend de observabilidade.

A combinação dos pontos fortes de cada projeto permite que os usuários resolvam os desafios da observabilidade utilizando um padrão único de bibliotecas, APIs, coleta, processamento e envio de dados de telemetria agnóstico de vendors de observabilidade.

O que é OpenTelemetry?

É um framework de observabilidade que sustenta um conjunto de APIs, SDKs, agentes e outros elementos que permite gerar, processar e transmitir dados de telemetria de forma unificada e agnóstico ao provedor de observabilidade.

Conceitos do OpenTelemetry

Antes de começar a usar o OpenTelemetry, é importante entender quais são os principais componentes e terminologias.

Isso nos ajuda a compreender como funciona o OpenTelemetry.

Existe outros componentes e terminologias que não foram citadas aqui, consulte a documentação oficial do projeto.

O projeto é composto por:

Signals

Métrica, log, trace e bagagem são exemplos de sinais ou tipos de telemetria que formam a estrutura em torno do OpenTelemetry. Cada sinal representa um conjunto lógico e autônomo.

Esses sinais são importantes para a observabilidade, troubleshooting e monitoramento. Eles auxiliam os engenheiros a entender o que está acontecendo em um sistema, rastrear problemas e tomar decisões mais assertivas.

Instrumentation

Para tornar um sistema observável, é necessário que ele seja instrumentado. É adicionado um código ao sistema para coletar dados de telemetria.

Algumas linguagens suportam a autoinstrumentação, que provê uma forma de instrumentar seu aplicativo sem alterar o código-fonte do sistema.

Existem outros mecanismos para instrumentar um sistema, instrumentação manual e utilizando bibliotecas fornecidas pelo projeto OpenTelemtry.

Semantic Conventions

A convenção semântica é composto por vários documentos que especificam nomenclaturas comuns para os diferentes tipos de dados.

Por exemplo, se o servidor A possui uma métrica http.server.duration e o servidor B uma métrica http.server.request_duration, como podemos comparar a duração total entre os dois serviços se as métricas têm nomes diferentes?

A imagem mostra algumas especificações de atributos para Spans de cliente/servidor HTTP.

Image description

Sampling

Através do rastreamento distribuído, podemos observar a latência das requisições que passa entre os serviços.

No entanto, se a maioria das requisições tem um status bem-sucedido com latência num período previsível, precisamos de todos esses dados?
Nem sempre é necessário um grande volume de dados para encontrar os insights corretos. Você só precisa da amostragem correta desses dados.

A ideia por trás da amostragem é controlar a quantidade de dados que você envia para o backend de observabilidade, muitas vezes esses provedores de observabilidade cobram por dados ingestados.

Os principais objetivos da amostragem são: gerenciamento de custos, foco no rastreamento relevantes e filtrar ruídos.

Conclusão

Exploramos um pouco da história do OpenTelemetry e podemos entender a origem do projeto. Compreender os conceitos do OpenTelemetry nos auxiliará a superar os desafios para desenvolver observabilidade de alta qualidade.

Os sinais são compostos por trace, métricas, logs e baggage, os quais geram telemetria. Conhecer as convenções semânticas e a propagação de contexto ajuda na correlação dos eventos entre os sinais, através da amostragem podemos gerenciar os dados que serão enviados para o backend de observabilidade mantendo o foco nos dados relevantes para o sistema.

Referências:

Top comments (0)