="承诺过"电池剩余接入监控",这次兑现:从 UPS 状态读取到首页面板的完整实现笔记,附数据采集的三条原则。">
woshale.com
← 返回博客

把 UPS 电量搬上监控面板

《第一次实战》那篇的结尾许过愿:电池剩余接入监控。这次兑现。完整链路三步:读取状态 → 定时聚合 → 面板展示,每一步都比想象中简单,也比想象中讲究。

读取:从 USB 到 JSON

大多数家用 UPS 都支持 USB 通信,nutapcupsd 这类守护进程能把状态暴露成标准接口。我取的是三个字段:电池剩余百分比、预估续航、市电状态。采集频率五分钟一次——和站点统计同一个定时器,能复用的调度器就不新建

聚合:写进 stats.json

# 伪代码:三行说完采集逻辑
battery = read_ups_battery()
history[date] = battery
panel["ups_percent"] = battery

聚合时做了两件小事:历史值写进本地文件做滚动保留(画趋势图用),当前值只保留最新一份。监控数据的写入永远用"临时文件 + 原子替换",避免面板读到写了一半的文件。

展示:首页一行字

面板上它只是一行小字:"市电 · 电池 100%"。安静、不闪、不弹。所有监控展示都应该这样:正常时低调存在,异常时高声呐喊——这才是"电池剩余"四个字该有的性格。

监控的上限不是技术,是克制:展示你能解释的,隐藏你只是能采集的。

至此,首页控制台的每一格数据都有了自己的采集故事。据点的"神经系统"又长了一根末梢。

系列 · 据点运维
← 更多文章 聊聊这篇 →