上周帮一个客户的运维团队把两百多台机柜 PDU 的电量数据接进了他们已有的 Prometheus。过程不复杂,但中间有几个坑值得记下来,尤其是 OID 那一段——找错节点会让你白等两天。
先确认你的 PDU 到底支持哪种采集方式
这一步看着多余,实际很关键。市面上的智能 PDU 大致分三种数据出口:
采集方式
数据粒度
适合场景
SNMP Get
整机或支路级
已有网管平台,快速接入
SNMP Trap
事件级
告警联动
Modbus RTU/TCP
寄存器级
自控系统、电力监控
HTTP / MQTT
视厂商实现
云原生栈
这次客户要的是 Prometheus 拉取模式,所以走 SNMP Get。Prometheus 本身不认 SNMP,需要 snmp_exporter 做一层转换。
OID 别靠猜,先 walk 一遍
我见过最浪费时间的做法,是拿着厂商文档里的 OID 直接写配置,跑不通再改。正确顺序是先 snmpwalk 把整棵树拉下来看一眼:
snmpwalk -v2c -c public 10.20.30.41 1.3.6.1.4.1
返回里你会看到一堆私有节点。这时候要做的事是:带上负载,记录一次读数;断开负载,再记录一次。数值变化明显的那几个节点,就是电流和功率。
我们厂 2014 年做起机柜 PDU 这门生意,计量模块的出厂偏差控制在 ±1% 以内。但这里有个容易混淆的点:SNMP 返回的整数常常是放大过的,比如电流返回 2345 表示 23.45 A。这个倍率不写进配置,画出来的曲线就是平的。
常见字段
典型倍率
说明
电压
10 或 100
220.0 V 可能返回 2200
电流
100
23.45 A 返回 2345
有功功率
1 或 10
单位 W,看厂商定义
电能
10 或 100
单位 kWh,累加量
snmp_exporter 配置怎么写
generator 生成配置这一段略过,直接看关键部分。重点是 metrics 里的 scale 和 type:
modules:
pdu:
walk:
- 1.3.6.1.4.1.xxxxx.1.2
metrics:
- name: pdu_branch_current
oid: 1.3.6.1.4.1.xxxxx.1.2.3.1.4
type: gauge
scale: 0.01
indexes:
- labelname: branch_index
type: gauge
scale: 0.01 对应前面说的 100 倍率。这个字段填错不会报错,只会让你得到一条错 100 倍的曲线,所以我习惯生成完先跑一次 curl 验证:
curl -s "http://localhost:9116/snmp?target=10.20.30.41&module=pdu" | grep pdu_branch_current
采集间隔别设太短
这是第二个坑。两百多台设备,每台二十多个支路,如果设 15 秒一轮,snmp_exporter 自己就先扛不住了。而且大部分 PDU 的计量芯片刷新率也就 1 秒左右,采太快拿到的还是重复值。
我的经验是 60 秒一轮,支路级数据降采样到 5 分钟存一份长期数据。Prometheus 侧配 recording rule 就行。
ATS 切换那一瞬间的数据怎么处理
带双路输入的机型,切换发生在 ≤7ms 内,负载侧基本无感,但采集侧会看到一个电压瞬时凹陷。如果你的告警规则里有"电压低于某值持续 N 秒",这种毫秒级凹陷不会触发,不用担心。
真正要注意的是切换完成后的 SNMP 会话。有些固件在切换后会重置网络模块,导致接下来一到两个采集周期取不到数。解决办法是在告警规则里加 for: 3m,避免这种抖动刷屏。
画板这一步反而不是重点
数据进来了,Grafana 面板按机柜维度组织就行。我一般做三层:单个机柜的支路电流堆叠图、按列的功率汇总、全机房 PUE 趋势。PUE 那部分需要把空调和 UPS 的电量也接进来,光有 PDU 数据算不出来。
顺带提一句,如果你们在做选型阶段就要考虑对接,建议在采购前先把 OID 文档要过来。我们这边做非标定制时,客户提出要接入特定平台,30 分钟内能出图,1 小时内报价,接口文档随图纸一起给。厂里的老师傅干了 25 年,他常提醒一句话:接口这东西后补比预留贵得多。
最后列几个我踩过的点
踩过的坑
现象
处理方式
交换机端口绑定 MAC
换模块后采集全断
端口解除绑定或更新绑定表
两台设备 community 写反
数据串了半天没发现
按机柜编号逐一核对
固件版本不一致
同型号 OID 不同
升级前统一版本并验证
容器未放出向 UDP
一直超时
开 161 出向规则
产品本身的合规资质(CCC、CE 里的 LVD 与 EMC 部分、GS)和这次的数据对接没有冲突,但如果你要改 PDU 的通讯模块硬件,ISO 9001 体系下这个变更得走评审,别私下换。
收个尾
整套流程跑通大概一天半,其中半天花在确认 OID 倍率上。剩下的时间主要在和客户的网管平台对字段命名。技术本身没难度,耐心比对才是关键。