Monitoramento e alertas

Sabe quando serviço cai —— antes do usuário

Monitoramento não é opcional

Serviço tá rodando não significa estar tranquilo. CPU no máximo, você não vê. Memory leak, você não vê. Disco cheio, você não vê. Só descobre quando usuário vem reclamar que não funciona mais, super passivo.

Monta um sistema de monitoramento e alerta, problema acontecendo você já sabe antes do usuário, esse é o jeito certo de fazer ops.

😰 Servidor saiu do ar no meio da noite e ninguém soube

sexta à noite sai do trabalho e servidor tá off quietly, segunda de manhã todo mundo reclamando "não tá funcionando". Você abre servidor e vê — disco cheio, log crescendo descontrolado encheu espaço. Se tivesse monitoramento, sexta à noite recebia aviso, 5 minutos resolveria.

Prometheus + Grafana + notificação de alerta

Usa Prometheus pra coletar métrica, Grafana pra visualizar dashboard, com regra de alerta, CPU alto, memória faltando, serviço morreu, avisa no celular ou email na hora. Solução inteira é open source free, Docker deploy em um clique.

deploy em um clique do stack de monitoramento

Use docker-compose para subir Prometheus, Grafana e Node Exporter tudo junto:

Fluxo de implantação
# Criar diretório de monitoramento
docker-compose.yml — stack de monitoramento
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - ./alert_rules.yml:/etc/prometheus/alert_rules.yml
      - prometheus_data:/prometheus
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"
      - "--storage.tsdb.retention.time=30d"

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: always
    ports:
      - "3001:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=your_secure_password

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: always
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - "--path.procfs=/host/proc"
      - "--path.sysfs=/host/sys"
      - "--path.rootfs=/rootfs"

  alertmanager:
    image: prom/alertmanager:latest
    container_name: alertmanager
    restart: always
    ports:
      - "9093:9093"
    volumes:
      - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml

volumes:
  prometheus_data:
  grafana_data:

Configuração Prometheus

prometheus.yml
global:

regra de alerta

alert_rules.yml —— regra de alerta
groups:

configuração de notificação de alerta

depois de alerta dispara, dá pra notificar você? Email, ou manda pra DingTalk/Wechat/Slack:

alertmanager.yml —— configuração de notificação
global:
Esse artigo vai desde o zero, guia bem passo a passo desde comprar servidor até terminar implantação. Mesmo sem nunca ter mexido com servidor em nuvem, copiando consegue.