O que é OpenTelemetry e como funciona na prática?

Com a crescente necessidade de usar diferentes aplicações para executar processos, fornecer serviços e colher dados, a observabilidade em sistemas ficou mais complexa. O OpenTelemetry vem justamente atuar no cerne do problema, ao permitir centralizar os processos de observabilidade de diferentes aplicações.

Surpreendentemente, encontrar informações claras sobre o papel do OpenTelemetry no monitoramento de sistemas ainda não é fácil. Por isso, produzimos um conteúdo objetivo para situar os desenvolvedores e gestores em relação às novidades.

Continue a leitura para entender rapidamente o que é o OpenTelemetry, para que serve e como funciona na prática!

O que é OpenTelemetry?

Com a evolução da computação distribuída, tem sido exigida dos desenvolvedores e dos responsáveis pela gestão dos sistemas uma maior atenção à observabilidade.

Afinal, a complexidade cada vez maior dos microsserviços e das aplicações torna mais difícil identificar os logs das aplicações, suas saídas, e quando querys e serviços estão com tempo de resposta mais elevado do que o normal.

Além disso, coletar, processar e exportar dados de diferentes aplicações e sistemas é essencial para a observalidade. 

Porém, como dependemos dos microsserviços de computação e, normalmente, a exportação das informações de cada aplicação depende de um vendor obtido no mercado, o que tem ocorrido é o lock in dos desenvolvedores e empresas com os fornecedores. 

Assim, a criação do OpenTelemetry foi a solução encontrada pelos profissionais de DevOps e gestores para tornar a observabilidade das aplicações agnóstica aos vendors, ou seja, centralizar as ações para “driblar” as voltas que normalmente são dadas para elevar a capacidade de monitoramento.

A seguir, explicamos como a criação do OpenTelemetry combinou os projetos OpenTracing e OpenCensus para aprimorar a observabilidade de sistemas e aplicações em rede.

OpenTracing

O OpenTracing foi uma iniciativa de padrão aberto, voltada para a criação de uma aplicação que conseguisse direcionar o desenvolvimento de frameworks e rastrear rapidamente o caminho feito por logs, aberturas de chamadas, etc. Ou seja, seu foco é o tracing distribuído ou distributed tracing.  

OpenCensus

O OpenCensus, em princípio, foi idealizado pelo Google como uma plataforma de observabilidade e, posteriormente, teve participação da Microsoft. 

Nesse caso, trata-se de uma iniciativa de padrão aberto, que facilita a obtenção e monitoramento de métricas de observabilidade e coleta de distributed traces, transferindo-as para o backend desejado.

OpenTelemetry

O OpenTelemetry é justamente a combinação das funções do OpenTracing e do OpenCensus em uma só aplicação, elevando a capacidade de observabilidade dos microsserviços. Por isso, vem sendo considerado o futuro da telemetria instrumental.

Ainda como aplicação de código aberto, o OpenTelemetry foca em três pilares:

  • Rastreamento distribuído(tracing)
  • Métricas 
  • Logs

Todas as informações e rastreamentos são feitos direto nas nuvens, solucionando uma série de problemas comuns que os projetos anteriores ainda não eram capazes de resolver.

Entre as funções mais importantes do OpenTelemetry, estão:

  • Monitoramento de integridade dos microsserviços.
  • Atribuição do uso de recursos a grupos de usuários segmentados.
  • Criação de solicitações prioritárias entre recursos compartilhados.

opentelemetry

Como o OpenTelemetry funciona na prática?

Antes de explicar as formas como o OpenTelemetry funciona na prática, vamos rapidamente contemplar os componentes que permitem o seu funcionamento.

Primeiramente, o OpenTelemetry abrange um conjunto de ferramentas que permitem trabalhar dados de variados formatos em softwares Cloud Native. São ferramentas APIs e SDKs prontas para serem utilizadas na observabilidade, com a vantagem da possibilidade de fazer instrumentalização.

Ou seja, o OpenTelemetry permite customizar as ferramentas para trabalhar em diferentes contextos de DevOps, de acordo com as necessidades da equipe.

O Collector é a função que permite gerar, coletar, processar e exportar para o vendor os dados de telemetria de forma padronizada, logo, ele é o componente principal para execução dos objetivos. Porém, com o OpenTelemetry, o Collector não mais dependerá do vendor fornecedor, sendo, portanto, o que chamamos anteriormente de uma aplicação agnóstica, ou vendor agnostic.

Por fim, ficam disponíveis várias Libs (bibliotecas de dados), independentes do vendor, para trabalhar com tracing, logs e autotracing assim que o OpenTelemetry for implementado, eliminando a necessidade de customização logo que os novos recursos são adotados.

A seguir, vamos abordar as diferentes formas do uso do OpenTelemetry na prática!

Sem Collector

Sem Collector, o OpenTelemetry vai operar enviando as informações da aplicação, hospedada em um servidor, aos vendors utilizados, separando métricas e tracing dos logs.

Essa modalidade de uso permite que o OpenTelemetry utilize as bibliotecas disponíveis e, assim, não dependa das “implementações na unha”, isto é, das instalações e configurações manuais, realizadas ao adotar a solução proposta. 

Além disso, essa modalidade proporciona a flexibilidade de direcionar os dados a um ou outro vendor, conforme as necessidades e condições de desenvolvimento. 

Com Collector no modo agente

Outra opção é utilizar o Collector no modo agente. Nesse caso, ao invés de as informações serem enviadas direto para o vendor, o Collector se conecta ao servidor como um agente externo e recebe as informações das aplicações para então processá-las e direcioná-las ao vendor.

Assim, essa é uma modalidade que proporciona mais automações, pois o Collector identifica e envia as informações de logs, tracing e métricas para os vendors certos. Em contrapartida, essa opção proporciona menos flexibilidade do que o OpenTelemetry sem Collector.

Com Collector no modo server

Por fim, também é possível usar um Collector de OpenTelemetry no modo server. 

Nessa modalidade, o Collector funciona como um server independente, que recebe todas as informações das diferentes aplicações utilizadas. As informações são então processadas e exportadas aos vendors.

Essa modalidade proporciona maior poder de processamento das informações, porém, é necessário um trabalho maior de customização para implementar corretamente o OpenTelemetry e, assim, atingir o nível de observabilidade desejado.Como podemos ver, o OpenTelemetry proporciona uma série de vantagens importantes para a observabilidade em contextos de desenvolvimento baseados em microsserviços.

Rolar para cima