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 (Sinais)
- Instrumentation (Instrumentação)
- Semantic Conventions (Convenção Semântica)
- Sampling (Amostragem)
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.
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.
Top comments (0)