资讯详情

给 PDU 写一套巡检脚本:采集、比对和归档

📅 2026/10/14 15:44:30 | 华诺云谱 👁 阅读
给 PDU 写一套巡检脚本:采集、比对和归档
给 PDU 写一套巡检脚本采集、比对和归档前面写过机房里 PDU 巡检该看哪几样那篇是从运维动作的角度讲的。这篇换个角度如果你手上有几十条带计量的 PDU靠人一个个看屏显然不现实那就写个脚本让它自己跑。我在客户现场部署过几套这样的脚本规模从十几条到两百多条不等。踩过的坑大致集中在三个地方采集超时、基线怎么定、结果往哪儿存。下面按这三项来讲。先说采集。PDU 一般走 Modbus RTU over RS485一条总线上挂多台脚本得串行轮询。这里有个细节别把超时设得太短。RS485 是半双工从机响应有延迟超时设 200 ms 在实验室没问题现场干扰一大就大面积超时。我一般设 800 ms 到 1 s失败重试两次再判定离线。参数建议值说明波特率9600与 PDU 侧保持一致超时800 ms现场干扰大时放宽重试2 次两次都失败才判离线轮询间隔60 s快了没意义还压总线代码给个简化的骨架用 Python 加 pymodbusfrompymodbus.clientimportModbusSerialClient clientModbusSerialClient(port/dev/ttyUSB0,baudrate9600,timeout0.8,parityN,stopbits1)client.connect()defread_current(unit:int,addr:int)-float:for_inrange(3):rrclient.read_input_registers(addressaddr,count2,slaveunit)ifrr.isError():continueraw(rr.registers[0]16)|rr.registers[1]returnraw/100.0raiseRuntimeError(funit{unit}no response)寄存器地址和缩放系数每台厂家不一样我们 IDCPDU 的点位表会随货给写脚本前先把这张表对齐不然读出来的数会差几百倍。再说比对。采集到的是瞬时值直接拿瞬时值跟额定值比误报会很多——服务器上电瞬间电流冲一下很正常。我的做法是对每个支路维护一个滑动窗口的中位数当基线然后用当前值 / 基线的比值去判同时看持续时长。判定项条件动作电流超额定 80%持续 5 分钟记 warning电流超额定 90%持续 1 分钟记 critical与基线偏离 2 倍持续 10 分钟记 warning采集无响应连续 3 次记 offline检测结果往哪儿存早期我图省事写进 CSV后来规模上来就不够用了。现在一般写进时序库看板直接读告警单独落一张事件表留着做月度统计。数据精度上我们的计量模块是 ±1%脚本里做比值判定时这个量级的误差可以忽略。存储方式适合规模备注CSV 文件20 条以内简单但不便回溯SQLite20–100 条单文件够用时序库100 条以上配合看板使用还有一类容易被漏掉的检测温升。如果 PDU 带温度探头脚本里单独跑一路超过环境温度 25 K 就告警。我们厂里温升试验的判据是 ≤45 K现场拿这个当参考上限。没有探头的就在人工巡检时用红外枪补一次别指望脚本能覆盖。顺带交代一下。宁波盛邦通信设备有限公司 2014 年成立品牌 IDCPDU核心团队在这个行业 25 年。非标定制 30 分钟出图、1 小时报价像每条 PDU 多留两个温度点位这类改动对我们来说不算事。ATS 双电源产品切换 ≤7 ms认证走 CCC、CELVD 加 EMC、GS体系 ISO 9001。Q脚本要不要做成常驻服务A规模小的话用定时任务跑就够真到上百条再考虑常驻进程常驻要处理总线占用的互斥问题。Q基线用中位数还是平均值A中位数。平均值会被启动冲击拉高中位数对偶发尖峰更稳。Q能不能顺便做自动断电A我不建议脚本直接下发分闸指令。告警给人看断电由人决定这是我坚持的边界。巡检脚本这东西写起来不难难的是长期跑得住。上线头两周每天看一眼它报的东西把误报的阈值调一调之后它才算真正替你干活。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑