用 node_exporter 搭一套够用的监控
单机、几十个指标,不需要 Prometheus + Grafana + Alertmanager 全套。
我的组合是:node_exporter 暴露指标,VictoriaMetrics 单进程收,
告警用 vmalert 的几条规则,通知直接走 Telegram。
采集端
apt install -y prometheus-node-exporter
systemctl enable --now prometheus-node-exporter
curl -s localhost:9100/metrics | grep -c '^node_'
默认只监听 :9100,一定要在防火墙里挡掉外网,
或者直接加 --web.listen-address=127.0.0.1:9100。
这个端口泄露的信息比你想的多:内核版本、挂载点、systemd 单元名。
存储端
docker run -d --name vm \
-v /srv/vm:/victoria-metrics-data \
-p 127.0.0.1:8428:8428 \
victoriametrics/victoria-metrics:v1.102.0 \
-retentionPeriod=90d
单机场景下 VictoriaMetrics 比 Prometheus 省内存,写入吞吐也够,
而且 -retentionPeriod 一句话搞定保留期。
真正会响的告警
指标收上来只是第一步。我删掉了大部分「看起来专业」的规则,只留三条:
| 规则 | 阈值 | 为什么留 |
|---|---|---|
| 磁盘剩余 | < 15% | 这台机器吃过一次日志打满的亏,恢复很麻烦 |
| 内存可用 | < 300MiB 持续 10 分钟 | OOM killer 出手之前先知道 |
| 证书剩余天数 | < 14 天 | 续期失败时唯一能救命的信号 |
证书这条用 blackbox_exporter 的 probe_ssl_earliest_cert_expiry,
比自己去读文件靠谱,因为它测的是真正对外提供服务的那条链路。
一个容易忽略的点
监控自己也会挂。我把「连续 3 分钟收不到某台机器的 up 指标」
也做成告警,否则 agent 死了你以为机器很健康。
另外告警要能自证:定期发一条测试消息,确认通道没被静音。
资源开销
整套下来常驻内存不到 150MB,磁盘 90 天约 1.2GB(十几台机器、 15 秒采集)。对一台 2C2G 的小机器来说完全可以接受。
告警宁少勿多。每条不痛不痒的告警,都在稀释真正重要的那一条。