硬件健康检查自动告警通过“采集异常信号→判定故障→推送通知”闭环实现,支持zabbix(ipmi/smart/snmp)、prometheus+node exporter+alertmanager、python+psutil三种方案,需注意smart刷新、ipmi权限、误报抑制及webhook定位信息。

硬件健康检查触发自动告警,关键在于“采集异常信号 → 判定故障 → 推送通知”三个环节闭环。不依赖人工巡检,就能在硬盘掉盘、温度越限、电源异常、RAID降级等真实故障发生时,1分钟内收到邮件或Webhook消息。
用Zabbix实现硬件级告警(推荐企业级场景)
Zabbix原生支持IPMI、SMART、SNMP等多种硬件探测协议,适合服务器集群统一管理:
- 启用Zabbix Agent的
system.hw和system.sw内置键值,或部署zabbix-agent2启用smart.disk监控项,直接读取硬盘SMART属性(如Reallocated_Sector_Ct、Temperature_Celsius) - 配置IPMI监控:在Zabbix Web界面添加主机时勾选“使用IPMI”,填入BMC地址、用户名/密码;Zabbix会自动发现并监控风扇转速、电压、CPU温度、电源状态等指标
- 设置触发器:例如写表达式
{HOST.NAME}:"smart.disk.temperature"{host:smart.disk.temperature.last()}>75,表示某块硬盘温度持续超过75℃即触发 - 绑定动作(Action):选择“发送邮件”或“远程命令(调用Webhook)”,可指定发送给运维组邮箱,或向钉钉/企微机器人URL推送JSON格式告警内容
用Prometheus+Node Exporter+Alertmanager组合(云原生/轻量部署)
适合Linux物理机或虚拟化宿主机,对硬件传感器兼容性好:
- 确保系统已加载
ipmi_si、coretemp、it87等内核模块(lsmod | grep ipmi验证),并安装ipmitool和smartmontools - 启动Node Exporter时开启硬件采集:
./node_exporter --collector.ipmi --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.smartmon - 在Alertmanager规则中定义硬件告警,例如:
- name: hardware-alerts
rules:
- alert: DiskSMARTFailure
expr: node_smartmon_device_smart_status{type="0"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: "硬盘{{ $labels.device }} SMART自检失败"
用Python脚本+psutil+SMTP快速落地(中小环境/临时补位)
无需部署整套监控平台,50行代码即可覆盖核心硬件风险点:
- 用
psutil.sensors_temperatures()获取CPU/主板温度,psutil.sensors_fans()读取风扇转速,psutil.disk_partitions()配合smartctl -a /dev/sda子进程调用检查硬盘健康 - 设定阈值逻辑:比如
if temp > 80 or fan_rpm ,满足任一条件即触发 - 通过标准
smtplib发邮件,或用requests.post()向Webhook URL发送含主机名、时间、故障详情的JSON体 - 用
systemd守护该脚本,每2分钟执行一次,避免漏报
关键注意事项
硬件告警不是设完就高枕无忧,需关注几个易忽略点:
- SMART数据需定期刷新:某些硬盘需执行
smartctl -t short /dev/sda主动测试,否则Reallocated_Sector_Ct等值不会更新 - IPMI权限要最小化:BMC账号仅授予“只读传感器”权限,避免暴露服务器控制面
- 避免误报:温度类告警建议加
for: 90s持续判断,排除瞬时峰值;电源类告警一旦触发必须立即响应,不可设延时 - Webhook内容要带定位信息:除了“硬盘故障”,必须包含
hostname、device:/dev/sdb、RAID级别(如能获取)、服务器机柜位置(可从Zabbix宏或环境变量注入)










