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.
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.
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.