Monitoring dan alert

Service down lo ketahuan duluan — jangan tunggu user complain

Monitoring bukan pilihan opsional

Service running bukan berarti all good. CPU maxed lo gak tau, memory leak lo gak tau, disk full lo gak tau — sampe user bilang "gak bisa", baru terlalu reactive.

Search deploy plan...

😰 Service down tengah malam nggak ada yang tau

Jumat sore after work server quietly down, Monday pagi banyak orang complain "tidak bisa". kamu buka server lihat —— disk full, log file gila-gilaan grow occupy space write explode. kalau ada monitoring alert, Jumat sore sudah terima notify, lima menit fix selesai.

Prometheus + Grafana + notifikasi alarm

Use Prometheus collect metric data, Grafana visualize dashboard, plus alert rule, high CPU, memory insufficient, service down semua dapat instant notify ke phone atau email. Full plan open-source free, Docker one-click deploy.

satu klik deploy monitoring stack

Pakai docker-compose tarik Prometheus, Grafana, Node Exporter bareng-bareng:

Deploy monitoring stack
# Buat direktori monitoring
docker-compose.yml — stack monitoring
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:

Konfigurasi Prometheus

prometheus.yml
global:

alert rule

alert_rules.yml — aturan alert
groups:

config alert notify

alert trigger gimana notify kamu? bisa email, push ke DingTalk/WeChat Work/Slack:

alertmanager.yml — config notify
global:
Artikel tutorial ini berguna buat kamu?