Blog
Prometheus + Grafana:盯住家里的机器
监控上线之前,我是「出事了才 ssh 上去 top」。出过两次:磁盘 100% 写满导致数据库挂了;温度高过热降频却浑然不知。Prometheus + Grafana 对我来说不是 KPI 大屏,是少被意外叫醒。下面不写成安装说明书,而写成观测日志——我每天到底点开什么、为什么还留着它。
很多人装完一排导出器就觉得大功告成。我更关心三周以后的自己:还会不会打开这套东西,打开之后第一眼看哪。答案如果是「不知道看啥」或「全是红点懒得理」,那监控等于没装。观测日志逼我诚实地记录使用习惯,而不是展示架构图。
观测日志:组件在机柜里的位置
家里规模单机 Prometheus 足够。数据目录放 SSD,保留 15–30 天。别和媒体库抢机械盘随机 I/O。
固定角色:
- Prometheus:抓取与存储
- Grafana:我每天真正「看」的入口
- node_exporter:每台 Linux
- 可选:cadvisor、smartctl exporter、Blackbox
抓取片段:
scrape_configs:
- job_name: node
static_configs:
- targets:
- lab-core:9100
- nas:9100
- vps:9100
VPS 上的 exporter 只监听 WireGuard 地址,不暴露公网。安全组和防火墙按网段放行。某次我把 9100 误开到 0.0.0.0,公网扫到一堆 node 指标,等于免费信息泄露——当天就收进 WG 网段。
每天早上:咖啡还没凉时看的四块
顺序几乎固定,花不到三分钟。
第一眼:磁盘可用率。 根分区和 /data。阈值 >85% 我标黄,>92% 标红。写满是我亲历过的事故源:日志、Docker 层、备份暂存都能悄悄吃光。面板上我放的是「剩余 GB」大字,不是漂亮曲线——曲线给复盘用,大字给决策用。
第二眼:内存与 swap。 尖峰不可怕,持续 swap 可怕。备份任务夜间把缓存打满可以理解;白天业务时段长期 swap,说明该减容器或加内存。我被 swap 骗过:load 不高,但 Minecraft 存盘一卡一卡,最后是盘和内存一起受罪。
第三眼:CPU iowait 与 load。 要分清「算得忙」和「盘拖死」。编译、ZFS scrub、全盘 rsync 会抬 load,预期内。iowait 高且磁盘利用打满,去查是谁在写——往往是某次忘记限速的备份。
第四眼:关键服务是否 up。 node up、关键 compose、游戏服进程或 blackbox 探端口。进程在但端口没在听,只看 host 存活会假绿。我补过一次 blackbox 探 lab-core:25565,避免「systemd active 但 MC 卡在启动」。
四块看完,若全绿,手机放下。若有一块发黄,才会点进更细的图:哪个挂载点、哪张盘、哪个 job 没刮到。日常纪律是「默认不展开」,不然 Grafana 会变成新的时间黑洞。
午后偶发:我会不会多看一眼
多数工作日中午不再打开 Grafana。例外:
- 早晨磁盘黄了,中午看有没有继续涨
- 家里有人抱怨「网卡」,看 NAS 网卡吞吐和路由器是否在我监控范围内(很多时候不在,那是另一笔债)
- 刚改过 compose,看重启后 up 时间和错误率
看板从官方 node 仪表盘改,删掉一半用不到的面板。花哨百分位曲线不如一个大号「磁盘还剩多少 GB」。我曾加过十几张「很酷」的图,两周后发现从来只看四块——其余全部折叠删除,加载都更快。
手机上我只收藏一个仪表盘链接,名字就叫「起床三分钟」。名字土,但能让未来的自己不在文件夹里迷路。
告警日志:什么东西配得上打断我
Alertmanager 推 Telegram。规则极简:
- 磁盘空间
- 实例 down 超过 5 分钟
- 智能盘预测失败(若有)
- 证书过期(若探得到)
不告警「CPU > 80% 持续 1 分钟」。编译和备份会误伤,人一旦学会忽略,就会忽略真正重要的。噪声一高,通知就被关。家庭监控的第一原则:响的必须值得起身。
有一周我把「容器重启」也告了,Docker 更新当晚手机炸了。第二天规则删掉。重启本身不一定是事故;持续重启风暴才是——那要用更稳的判定,而不是每次 up -d 都推送。
某夜值班记录:监控如何把自己吃垮
保留时间曾设 180 天,小 SSD 上 Prometheus TSDB 把盘写到告警线。监控组件把自己监控红了,很讽刺。处理:缩保留到 30 天,压缩/清理,并把 Prometheus 数据目录纳入「磁盘第一眼」的显式挂载点。
抓取间隔 15–30s 足够。高基数标签(用户名、完整 URL)会炸内存,家庭场景老实点。树莓派级设备更要克制,别把公司那套 cardinality 搬回家。
Grafana 匿名只读可以,但别裸奔公网;放 WireGuard 后或套 Cloudflare Access。我把 Grafana 挂过短暂公网「方便手机」,扫到的登录尝试让我连夜收回。
部署与遗漏:写在日志末尾的备忘
曾经踩过、现在开机检查会顺带想的:
- node_exporter 防火墙是否放行抓取源
- 时区是否一致,避免「告警时间像未来」
- 是否只监控主机、不监控业务端口
- 备份任务是否与 scrub 叠在同一窗口把盘打满
监控是运维的感官。先覆盖磁盘、宕机、关键端口,再谈漂亮大盘。能在坏事变灾难前给你一小时,这套就值回电费。我每天看的其实很少——但那很少几眼,必须真。
今天的观测日志到此为止。没有新面板,没有新告警规则。有时候最健康的监控状态,就是你连续两周都觉得「没什么好看的」——那说明底座还在线。