之前服务器上的服务越来越多,挂了经常是用户先发现、我后知道。于是花了个周末把监控补上,目标很简单:能看到 CPU/内存/磁盘/容器状态,挂了能告警,但不想为此再多养一台机器。
选型
最后定的组合是 node_exporter + cadvisor 采集,Prometheus 存储,Grafana 出图。都是社区标配,文档多、坑少。
最小 compose
services:
prometheus:
image: prom/prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
ports: ["9090:9090"]
node-exporter:
image: prom/node-exporter
network_mode: host
grafana:
image: grafana/grafana
ports: ["3000:3000"]
restart: unless-stopped
Grafana 直接导入社区现成的 dashboard(Node Exporter Full,ID 1860),五分钟就有图。
几个教训
- 采集间隔别贪心,15s 足够,5s 只会让磁盘更快被时序数据撑满。
- 告警先从最朴素的做起:磁盘 > 85%、内存 > 90%、容器重启次数突增,这三条能覆盖绝大多数事故。
- 面板不要直接裸奔公网。我后来全部收到内网,用隧道访问——这件事值得单独写一篇。
整套跑了一个月,资源占用很小,心里踏实多了。