Em sistemas modernos, especialmente distribuídos em ambientes de nuvem e Kubernetes, simplesmente monitorar recursos não é suficiente. É essencial entender o porquê das falhas, onde elas ocorrem, como afetam os serviços e quando agir.
Para isso, o conceito de observabilidade tem ganhado força, permitindo diagnósticos proativos, respostas rápidas e decisões baseadas em dados reais de produção.
Neste artigo, você aprenderá como montar uma stack de observabilidade completa usando três ferramentas robustas e open source:
- Prometheus para coleta e armazenamento de métricas,
- Grafana para visualização dos dados,
- Alertmanager para gerenciamento de alertas.
Parte 1 — Preparando o ambiente
Você pode seguir este guia tanto em uma VM local quanto em servidores cloud. Para fins didáticos, será utilizado Docker Compose, por ser portátil e fácil de replicar.
Pré-requisitos
- Docker e Docker Compose instalados.
- Acesso à internet.
- Editor de texto (ex: VS Code).
Parte 2 — Estrutura do projeto
Crie uma pasta chamada observabilidade
:
bash CopiarEditar mkdir observabilidade cd observabilidade
Dentro dela, crie os seguintes arquivos:
arduino CopiarEditar observabilidade/ ├── docker-compose.yml ├── prometheus/ │ └── prometheus.yml ├── alertmanager/ │ └── config.yml
Parte 3 — Configurando o Prometheus
prometheus/prometheus.yml
yaml CopiarEditar global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['node-exporter:9100']
Essa configuração faz o Prometheus monitorar a si mesmo e o Node Exporter, que coleta métricas do sistema operacional.
Parte 4 — Configurando o Alertmanager
alertmanager/config.yml
yaml CopiarEditar global: resolve_timeout: 1m route: receiver: 'default' receivers: - name: 'default' email_configs: - to: 'devops@empresa.com' from: 'monitor@empresa.com' smarthost: 'smtp.empresa.com:587' auth_username: 'monitor@empresa.com' auth_identity: 'monitor@empresa.com' auth_password: 'senha_segura'
💡 Para fins de testes locais, você pode usar o MailHog ou webhook de teste ao invés de configurar SMTP real.
Parte 5 — Montando o Docker Compose
docker-compose.yml
yaml CopiarEditar version: '3.8' services: prometheus: image: prom/prometheus volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' ports: - '9090:9090' grafana: image: grafana/grafana ports: - '3000:3000' volumes: - grafana-storage:/var/lib/grafana alertmanager: image: prom/alertmanager ports: - '9093:9093' volumes: - ./alertmanager/config.yml:/etc/alertmanager/config.yml node-exporter: image: prom/node-exporter ports: - '9100:9100' volumes: grafana-storage:
Parte 6 — Subindo a stack
Dentro da pasta raiz, execute:
bash CopiarEditar docker-compose up -d
Você poderá acessar:
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000
- Alertmanager: http://localhost:9093
Parte 7 — Configurando o Grafana
- Acesse o Grafana:
admin
/admin
(usuário e senha padrão). - Vá em Configuration > Data Sources > Add data source.
- Selecione Prometheus e informe a URL
http://prometheus:9090
. - Salve.
Agora você pode importar dashboards prontos da comunidade ou criar os seus usando PromQL.
Parte 8 — Criando regras de alerta no Prometheus
Altere seu prometheus.yml
para incluir regras:
yaml CopiarEditar rule_files: - "alert.rules.yml"
Crie o arquivo prometheus/alert.rules.yml
com o seguinte conteúdo:
yaml CopiarEditar groups: - name: alertas-node rules: - alert: CPUAlta expr: avg(rate(node_cpu_seconds_total{mode="user"}[2m])) > 0.9 for: 1m labels: severity: critical annotations: summary: "Uso de CPU alto" description: "Uso de CPU acima de 90% nos últimos 2 minutos"
Reinicie o container Prometheus após adicionar o arquivo.
Parte 9 — Visualizando e agindo
Com a stack no ar, você já pode:
- Acompanhar uso de CPU, memória e disco em tempo real via Grafana;
- Receber alertas automáticos por e-mail ou webhook;
- Explorar métricas com PromQL para diagnósticos detalhados;
- Criar dashboards temáticos por time, serviço ou infraestrutura.
Conclusão
Montar uma stack de observabilidade do zero com Prometheus, Grafana e Alertmanager é um passo fundamental para tornar seu ambiente mais confiável, resiliente e eficiente. Mais do que coletar métricas, essa prática permite interpretar o comportamento dos sistemas, antecipar falhas e reagir com agilidade.
Com esse conjunto, você tem controle total sobre a visibilidade dos seus serviços e cria a base para análises mais avançadas com logs e traces no futuro.