監控與告警

服務掛了第一時間知道 —— 別等使用者來告訴你

監控不是可選項

服務跑起來了不代表萬事大吉。CPU 跑滿了你不知道,記憶體洩漏了你不知道,磁碟寫滿了你不知道 —— 等到使用者來告訴你"用不了了",那就太被動了。

搭一套監控告警系統,問題發生的時候你比使用者先知道,這才是正確的運維姿勢。

😰 半夜服務掛了沒人知道

週五晚上下班後伺服器悄悄挂了,週一早上一堆人反饋「用不了」。你打開伺服器一看 —— 磁碟滿了,日誌檔案瘋狂增長把空間寫爆了。要是有監控告警,週五晚上就能收到通知,五分鐘就能處理完。

Prometheus + Grafana + 告警通知

用 Prometheus 採集指標資料,Grafana 做視覺化儀表板,再配上告警規則,CPU 過高、記憶體不足、服務掛掉都能第一時間推送通知到你的手機或信箱。整套方案開源免費,Docker 一鍵部署。

一鍵部署監控堆疊

用 docker-compose 把 Prometheus、Grafana、Node Exporter 一起拉起來:

部署監控棧
# 建立監控目錄
docker-compose.yml — 監控堆疊
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:

Prometheus 設定

prometheus.yml
global:

告警規則

alert_rules.yml — 告警規則
groups:

告警通知設定

告警觸發後怎麼通知你?可以發郵件、推到釘釘/企業微信/Slack:

alertmanager.yml — 通知設定
global:
這篇教程對你有幫助嗎?