🧭 Observability Made Easy: OpenTelemetry + Prometheus + Grafana in Docker

🧭 Observabilidade simplificada: OpenTelemetry + Prometheus + Grafana no Docker

A observabilidade é essencial para entender a saúde e o desempenho de aplicações modernas. Com ferramentas como OpenTelemetry , Prometheus e Grafana , você pode coletar, armazenar e visualizar métricas com facilidade. Neste post, mostrarei como configurar uma pilha de observabilidade totalmente funcional usando o Docker.

Você aprenderá como:

  • Coletar dados de telemetria com o OpenTelemetry Collector

  • Exportar métricas no formato Prometheus

  • Visualize dados no Grafana, provisionados automaticamente com o Prometheus como fonte de dados

Vamos mergulhar. 🐳


🗂️ Estrutura do Projeto

Primeiro, crie um diretório com a seguinte estrutura:

Arduino
my-otel-grafana-setup/
├── docker-compose.yml
├── otel-collector-config.yaml
├── prometheus.yml
└── grafana/
└── provisioning/
└── datasources/
└── datasource.yml

Cada arquivo desempenha um papel na definição, configuração e conexão dos serviços.


1. 🚢 docker-compose.yml

Este arquivo define e executa nossos serviços: OpenTelemetry Collector, Prometheus e Grafana.

inhame
version: '3.8' services: otel-collector: image: otel/opentelemetry-collector-contrib:latest volumes: - ./otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml ports: - "1888:1888" - "8888:8888" - "8889:8889" - "13133:13133" - "4317:4317" - "4318:4318" - "55679:55679" Prometeu: imagem: prom/prometheus:latest volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml portas: - "9090:9090" grafana: imagem: grafana/grafana:latest volumes: - ./grafana/provisionamento:/etc/grafana/provisionamento ambiente: - GF_SECURITY_ADMIN_PASSWORD=admin portas: - "3000:3000"

2. 🛠️ otel-collector-config.yaml

Esta configuração informa ao OpenTelemetry Collector para receber telemetria e exportar métricas no formato Prometheus.

inhame
receivers: otlp: protocols: grpc: http: exporters: prometheus: endpoint: "0.0.0.0:8888" service: pipelines: metrics: receivers: [ otlp ] exporters: [ prometheus ]
  • Recebe métricas OTLP via gRPC e HTTP

  • Exporta-os para o Prometheus na porta 8888


3. 📊 prometheus.yml

O Prometheus está configurado para extrair as métricas do coletor.

inhame
global: scrape_interval: 15s scrape_configs: - job_name: 'otel-collector' static_configs: - targets: [ 'otel-collector:8888' ]
  • Raspa a cada 15 segundos

  • Utiliza a rede interna do Docker Compose para alcançar otel-collector:8888


4. 📈 grafana/provisioning/datasources/datasource.yml

Provisiona automaticamente o Prometheus como fonte de dados do Grafana na inicialização.

inhame
apiVersion: 1 datasources: - name: Prometheus type: prometheus access: proxy url: http://prometheus:9090 isDefault: verdadeiro editável: falso

Não é necessária nenhuma configuração manual na interface do usuário: basta abrir o Grafana e começar a criar painéis.


🚀 Começando

1. Comece tudo

Navegue até a pasta do seu projeto e execute:

festança
docker-compose up -d

2. Acesse as Interfaces


📡 Envio de métricas

Para ver dados reais no Grafana, envie telemetria para o Coletor OTLP via:

  • http://localhost:4318/v1/metrics (HTTP)

  • grpc://localhost:4317 (gRPC)

Você pode usar:

  • Seu próprio aplicativo instrumentado

  • Ferramentas como otel-cli

  • Exportadores de amostra em SDKs OpenTelemetry


🖥️ Crie painéis no Grafana

Depois que os dados estiverem fluindo, vá para Painéis > Novo e comece a visualizar:

  • Taxa de solicitação

  • Contagens de erros

  • Métricas personalizadas

  • Qualquer coisa que seu aplicativo emita!


✅ Conclusão

Agora você tem um pipeline de observabilidade completo:

  • O OpenTelemetry Collector coleta dados

  • Prometeu raspa e armazena

  • O Grafana exibe belos painéis

Esta configuração é perfeita para testes locais, demonstrações ou como base para monitoramento de produção. Basta conectar seu aplicativo e começar a explorar sua telemetria!


💡 Dica profissional:

Amplie esta pilha com:

  • Registros e rastros

  • Alerta via Prometheus Alertmanager

  • Painéis do Grafana como código

Se você achou isso útil ou tiver dúvidas, sinta-se à vontade para entrar em contato ou deixar um comentário!

Voltar para o blogue
  • ChatGPT Uncovered Podcast

    Podcast descoberto do ChatGPT

    Pedro Martins

    Podcast descoberto do ChatGPT Podcast descoberto do ChatGPT Explorando as fronteiras dos modelos de conversação de IA Episódio 1: Compreendendo o ChatGPT Publicado em: 15 de maio de 2023 Seu...

    Podcast descoberto do ChatGPT

    Pedro Martins

    Podcast descoberto do ChatGPT Podcast descoberto do ChatGPT Explorando as fronteiras dos modelos de conversação de IA Episódio 1: Compreendendo o ChatGPT Publicado em: 15 de maio de 2023 Seu...

  • Power Apps In-Depth Podcast

    Podcast detalhado do Power Apps

    Pedro Martins

    Podcast detalhado do Power Apps Podcast detalhado do Power Apps Explorando os recursos do Microsoft Power Apps Episódio 1: Introdução ao Power Apps Publicado em: 20 de abril de 2023...

    Podcast detalhado do Power Apps

    Pedro Martins

    Podcast detalhado do Power Apps Podcast detalhado do Power Apps Explorando os recursos do Microsoft Power Apps Episódio 1: Introdução ao Power Apps Publicado em: 20 de abril de 2023...

  • Exploring Power Pages Podcast

    Explorando o podcast Power Pages

    Pedro Martins

    Explorando o podcast Power Pages Explorando o podcast Power Pages Mergulhando no mundo das Power Pages da Microsoft Episódio 1: Primeiros passos com Power Pages Publicado em: 10 de março...

    Explorando o podcast Power Pages

    Pedro Martins

    Explorando o podcast Power Pages Explorando o podcast Power Pages Mergulhando no mundo das Power Pages da Microsoft Episódio 1: Primeiros passos com Power Pages Publicado em: 10 de março...

1 de 3