Logo

dev-resources.site

for different kinds of informations.

Explorando a Observabilidade com OpenTelemetry: Propagação de Contexto e Arquiteturas Distribuídas

Published at
10/2/2024
Categories
observability
opensource
java
opentelemetry
Author
dellamas
Author
8 person written this
dellamas
open
Explorando a Observabilidade com OpenTelemetry: Propagação de Contexto e Arquiteturas Distribuídas

A observabilidade é um dos pilares para garantir o sucesso de sistemas complexos e distribuídos. Diferente do monitoramento tradicional, que reage a alertas específicos, a observabilidade oferece uma visão ampla e profunda do sistema, baseada em três pilares principais: métricas, logs e rastreamentos (traces). Isso possibilita não só a identificação de problemas, mas também a sua causa raiz, essencial para arquiteturas modernas como microservices.

O Papel do OpenTelemetry

O OpenTelemetry é uma estrutura open-source que facilita a implementação de uma estratégia robusta de observabilidade. Ele unifica a coleta de métricas, logs e rastreamentos distribuídos, padronizando como os dados são capturados e transportados. Dessa forma, mesmo em sistemas distribuídos, onde múltiplos serviços se interconectam, é possível ter uma visão clara do fluxo de dados.

Observabilidade vs Monitoramento

  • Monitoramento: Coleta dados estáticos para detectar se algo está errado.
  • Observabilidade: Permite entender por que algo está errado, correlacionando eventos de diversas fontes e serviços.

Um dos desafios enfrentados em arquiteturas distribuídas é garantir que os dados de uma requisição sejam correlacionados entre diferentes serviços. E é aqui que entra a propagação de contexto.

O que é a Propagação de Contexto?

Imagine um cenário onde uma requisição atravessa diversos microsserviços. Como rastrear cada uma dessas interações para entender todo o fluxo? Isso é possível graças à propagação de contexto, que garante que as informações sobre uma requisição (como IDs de rastreamento e spans) sejam passadas de um serviço para outro.

A propagação de contexto é como o fio condutor que liga todas as partes da aplicação, permitindo que você veja o trajeto completo de uma requisição. Esse processo é essencial para entender a performance e localizar problemas em sistemas altamente distribuídos. Sem a propagação de contexto, teríamos visibilidade apenas de partes isoladas do sistema, perdendo a correlação entre eventos.

Um Exemplo com OpenTelemetry:

Vamos imaginar um exemplo prático com o Naruto:

Naruto (Serviço A) pede ao Kakashi (Serviço B) para lhe dar uma missão, e Kakashi consulta o Banco de Dados de Missões (Serviço C). Cada interação precisa ser rastreada de forma que, se algo der errado entre Kakashi e o banco de dados, possamos identificar onde está o erro. O OpenTelemetry facilita isso associando spans (ou trechos de rastreamento) a cada parte da requisição, garantindo que todas as interações sejam correlacionadas.

Mecanismos da Propagação de Contexto

O OpenTelemetry utiliza padrões como o W3C Trace Context ( falaremos mais dele em outra ocasião), que define como o contexto de rastreamento deve ser propagado e lido por diferentes serviços. Esses dados podem ser transmitidos por meio de headers HTTP ou outros protocolos, permitindo a rastreabilidade em uma grande variedade de plataformas e ambientes.

Desafios na Propagação de Contexto

Implementar a propagação de contexto traz alguns desafios:

  • Sobrecarga de dados: Quanto mais serviços são envolvidos, mais spans e dados precisam ser coletados, processados e armazenados. Isso pode impactar a performance do sistema.
  • Compatibilidade entre serviços: Todos os serviços devem implementar corretamente a propagação de contexto, ou a cadeia de rastreamento será quebrada, comprometendo a observabilidade.

Conclusão

A observabilidade é indispensável para garantir a eficiência e confiabilidade de arquiteturas distribuídas. O OpenTelemetry desempenha um papel muito importante ao padronizar e simplificar a coleta de métricas, logs e rastreamentos. A propagação de contexto, por sua vez, é o mecanismo que permite rastrear requisições em um sistema distribuído, garantindo que possamos ter uma visão completa de todas as interações, desde o início até o fim.

Para quem está adotando ou pensando em adotar microsserviços, a implementação de uma estratégia sólida de observabilidade, com o OpenTelemetry, é inevitável. E você? Já utiliza o OpenTelemetry no seu ambiente?

Me siga no LinkedIn para acompanhar mais conteúdos com este.

opentelemetry Article's
30 articles in total
Favicon
OpenTelemetry Collector Implementation Guide: Unified Observability for Modern Systems
Favicon
Auto-Instrumentação com OpenTelemetry no EKS [Lab Session]
Favicon
InsightfulAI v0.3.0a1 Update: Railway Oriented Programming and Enhanced OpenTelemetry for Robust Pipelines
Favicon
Using OpenTelemetry with gRPC in Node.js and Express Hybrid Applications
Favicon
Enhancing Observability in Machine Learning with OpenTelemetry: InsightfulAI Update
Favicon
From Zero to Observability: Your first steps sending OpenTelemetry data to an Observability backend
Favicon
Usando stack de monitoria opensource no Kubernetes (sem Prometheus)
Favicon
Observing Spin Apps with OpenTelemetry and the .NET Aspire Dashboard
Favicon
Golang com Opentelemetry, prometheus, Grafana tempo OSS e Grafana padrão
Favicon
Monitor R Applications with an OpenTelemetry Collector
Favicon
Understanding Open telemetry and Observability for SRE
Favicon
How to publish JetBrains Rider plugin for opentelemetry/honeycomb
Favicon
Tracetest Tip: Testing Span Order with Assertions
Favicon
How to publish JetBrains Rider plugin for opentelemetry/honeycomb
Favicon
Monitoring Browser Applications with OpenTelemetry
Favicon
Instrumentação com OpenTelemetry: Zero-Code, Code-Based ou Bibliotecas Instrumentadas?
Favicon
OpenTelemetry: Traces, Métricas, Logs e Baggage
Favicon
Getting Started with OpenTelemetry
Favicon
Explorando a Observabilidade com OpenTelemetry: Propagação de Contexto e Arquiteturas Distribuídas
Favicon
Observability with ASP.NET Core using OpenTelemetry, Prometheus and Grafana
Favicon
Trace-Based Tests with GraphQL in Action!
Favicon
Wednesday Links - Edition 2024-08-07
Favicon
Implementing an Order Processing System: Part 5 - Distributed Tracing and Logging
Favicon
Tracetest Monitors: Synthetic Monitoring with OpenTelemetry and Playwright
Favicon
Unlocking Open Source Observability: OpenTelemetry, Prometheus, Thanos, Grafana, Jaeger, and OpenSearch
Favicon
Announcing Tracetest Enterprise On-Prem Solution
Favicon
OpenTelemetry with Elastic Observability
Favicon
Performans Ve Güvenilirlik Ölçekleri
Favicon
OpenTelemetry Metrics meets Azure
Favicon
OpenTelemetry Tracing on Spring Boot, Java Agent vs. Micrometer Tracing

Featured ones: