首页控制台的实时日志流目前只有四类事件:部署、备份、SSH 失败登录、证书检查。这篇记录第五类的设计——断电事件上墙,以及为什么它值得单独一个条目。
为什么断电值得上墙
对个人站来说,断电是最高频的"真实基础设施事件":它不可预约、影响面明确、恢复路径清晰。把断电写进日志流有两个价值:访客能看到据点真实经历过什么;站长则获得了一份无需维护的"基础设施历史"——每次断电都是一条带时间戳的记录。
数据结构设计
{
"time": "20:17",
"level": "WARN",
"msg": "市电中断 · UPS 切换电池供电",
"duration": "10 分钟",
"affected": ["nginx", "stats-timer"]
}
字段刻意保持最少:时间、级别、一句话描述、影响范围。监控数据最大的敌人是"什么都要"——断电事件的可用性取决于能不能被一眼读完。
采集方案的取舍
- 硬件方案:UPS 的 USB 状态接口,事件最准,但需要设备支持;
- 软件方案:系统日志里的开机记录反推——两次开机之间的时间差就是断电窗口,零硬件成本,精度到分钟;
- 当前选择:软件方案先行,接口预留硬件字段。等真正接入 UPS 通信后,数据结构不用改。
基础设施可视化的意义不是炫技,是把"看不见的可靠性"变成"看得见的记录"——记录本身就是可靠性的一部分。
实现完成后,首页日志流会新增一类事件。据点的神经系统又多了一根末梢——这根末梢连着的,是每个停电的夜晚。