~ / blog / observabilidade
22 set 2026observabilidade10 min de leitura

Prometheus + Grafana: observabilidade prática

Como montar Prometheus e Grafana para monitorar servidores e containers: métricas, alertas e dashboards úteis sem over-engineering.

PrometheusGrafanaDockerMétricas

1. Por que Prometheus + Grafana

Prometheus coleta métricas por pull (HTTP). Grafana visualiza e alerta. Juntos cobrem CPU, memória, disco, rede e containers sem precisar de agente pesado em cada host.

Use quando você já tem serviços em Docker ou servidores Linux e precisa de visibilidade antes de escalar para um APM comercial.

2. Stack mínima com Docker Compose

# docker-compose.yml
services:
  prometheus:
    image: prom/prometheus:v2.54.1
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - prom_data:/prometheus
    ports:
      - "9090:9090"
    restart: unless-stopped

  grafana:
    image: grafana/grafana:11.2.0
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=troque-isso
    volumes:
      - graf_data:/var/lib/grafana
    ports:
      - "3000:3000"
    depends_on:
      - prometheus
    restart: unless-stopped

volumes:
  prom_data:
  graf_data:
# prometheus.yml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: node
    static_configs:
      - targets: ["node-exporter:9100"]
  - job_name: cadvisor
    static_configs:
      - targets: ["cadvisor:8080"]
DICA · Não exponha 9090 e 3000 na internet sem autenticação ou reverse proxy com TLS.

3. Node Exporter (servidor)

  node-exporter:
    image: prom/node-exporter:v1.8.2
    command:
      - '--path.rootfs=/host'
    volumes:
      - /:/host:ro,rslave
    network_mode: host
    pid: host
    restart: unless-stopped

Métricas principais: node_cpu_seconds_total, node_memory_MemAvailable_bytes, node_filesystem_avail_bytes.

4. cAdvisor (containers)

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:v0.49.1
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    ports:
      - "8080:8080"
    restart: unless-stopped

5. Dashboards e alertas

No Grafana: Data source → Prometheus → URL http://prometheus:9090.

  • Importe o dashboard Node Exporter Full (ID 1860).
  • Importe Docker/cAdvisor (ID 14282).
  • Crie alertas simples: CPU > 85% por 5 min, disco < 15% livre.
# Exemplo de regra de alerta (prometheus)
groups:
  - name: host
    rules:
      - alert: HighCPU
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "CPU alta em {{ $labels.instance }}"

6. Checklist de produção

  • Prometheus e Grafana atrás de reverse proxy com TLS
  • Senha forte no Grafana + usuários separados
  • Retenção de métricas definida (ex.: 15–30 dias)
  • Alertmanager configurado (e-mail, Telegram ou Slack)
  • Targets de scrape documentados no prometheus.yml

7. Comandos e conceitos

Conceito / comandoO que faz
scrape_intervalFrequência com que o Prometheus busca métricas.
rate(...[5m])Taxa média por segundo nos últimos 5 minutos.
node_exporterExporta métricas do host Linux.
cAdvisorExporta uso de CPU/memória/rede por container.
PromQLLinguagem de consulta do Prometheus.

8. Erros comuns

SintomaCausaSolução
Target DOWNRede Docker ou porta erradaVerifique service names e network
Dashboards vaziosData source ou labels diferentesConfira job_name e instance
Disco encheRetenção alta + muitos targetsAjuste --storage.tsdb.retention.time
Alertas silenciososAlertmanager não configuradoConfigure receivers e routes

Quer aplicar isso ao seu contexto?

Se esse problema existe na sua operação, podemos analisar o cenário em um diagnóstico gratuito de 30 minutos.

solicitar diagnóstico gratuito →

Leia também