在企业级机房的日常运维中,Zabbix 凭借其强大的资源监控能力成为了主流标配。然而,随着受控节点(Host)和触发器(Trigger)数量的激增,运维团队常常面临“告警风暴”的困扰。当海量的 Warning 和 Disaster 级别邮件或企业微信通知同时涌入时,现场值班人员极易产生信息疲劳,导致关键硬件故障被漏看。

为了缩短故障的 MTTR(平均恢复时间),我们对现有的 Zabbix 报警媒介(Media Types)进行了扩展:在物理机房中部署了支持 TTS 语音合成与 HTTP 协议的博灵边缘监控终端,将线上抽象的监控数据,转化为线下机房内直观的物理声光播报。

一、 物理层告警的架构选型

传统的机房声光报警器通常基于继电器驱动,不仅布线繁琐,且只能发出单一的蜂鸣声,无法传递具体的故障上下文(例如无法区分是 OOM 还是网络丢包)。

我们在重构时选择的博灵智能终端,本质上是一个带有独立网络栈的 IoT 告警网关。它内置了文字转语音(TTS)芯片和可编程 LED 矩阵,并向外部暴露了标准的 REST API。这意味着我们可以将它视为 Zabbix 的一个外部 Webhook 接收端,实现高度解耦。

二、 Zabbix Webhook 媒介的深度集成

Zabbix 5.0+ 版本原生支持使用 JavaScript 编写自定义的 Webhook 报警媒介。我们通过编写 JS 脚本,将 Zabbix 产生的宏变量(Macros)提取并重组,直接推送给线下终端。

核心配置与脚本实现: 在 Zabbix Server 的 Administration -> Media types 中新建 Webhook,并配置如下核心 JavaScript 处理逻辑:

JavaScript

try {
    var params = JSON.parse(value);
    
    // 解析 Zabbix 传递的告警级别,映射到硬件的 LED 颜色
    var colorMap = {
        "Disaster": "red",
        "High": "red",
        "Average": "yellow",
        "Warning": "blue"
    };
    
    // 构建推送到边缘硬件的 JSON Payload
    var payload = {
        "text": "监控系统播报,节点:" + params.HOST_NAME + " 发生异常,详细信息:" + params.TRIGGER_NAME,
        "color": colorMap[params.TRIGGER_SEVERITY] || "green",
        "play_mode": params.TRIGGER_SEVERITY === "Disaster" ? "loop" : "once"
    };

    var req = new HttpRequest();
    req.addHeader('Content-Type: application/json');
    
    // 调用机房局域网内的硬件网关 API
    var response = req.post("http://10.0.1.55/api/v1/alert", JSON.stringify(payload));
    
    if (req.getStatus() != 200) {
        throw '网关请求失败,HTTP 状态码: ' + req.getStatus();
    }
    return 'OK';
} catch (error) {
    Zabbix.Log(4, '[ Physical Alert Webhook ] 失败: ' + error);
    throw 'Failed with error: ' + error;
}

通过上述脚本,当 DB-Server-01 的 CPU 负载超过 90% 时,现场终端的红色警示灯会立刻亮起,并直接用清晰的中文语音朗读出:“监控系统播报,节点 DB-Server-01 发生异常...”,彻底消灭了告警信息差。

三、 应对 Zabbix Server 宕机的边缘兜底策略

集中式监控架构的一个致命缺陷是:如果 Zabbix Server 本身所在的宿主机或核心交换机发生物理宕机,整个告警链路将全部瘫痪(即“监控系统本身的监控”难题)。

我们利用了该终端的边缘计算特性来补全这一短板: 该硬件自身支持轻量级的 ICMP Ping 和 TCP 端口探测。我们在硬件后台静态配置了对 Zabbix Server IP 及网关 IP 的周期性探测任务。一旦终端发现连续 3 个周期无法 Ping 通监控中心,将触发其内置的本地降级预案,自主拉响“核心监控节点失联”的语音警报。这种无需依赖上位机的独立发声机制,为整个架构提供了坚实的底线保障。

四、 扩展:对接老旧动环系统的 OT 融合

在部分机柜中,我们还保留着旧版的精密空调和温湿度传感器,这些设备仅支持 Modbus TCP/RTU 协议,接入 Zabbix 相对繁琐。由于该报警终端底层集成了完整的工控协议栈,我们将其直接并入工业交换机。它能够在不增加额外网关服务器的情况下,直接读取这些 OT 设备的寄存器数据,实现了 IT 软件监控与 OT 动环监控在同一个物理发声节点的完美汇聚。

总结 在构建现代化数据中心的可观测性体系时,除了不断优化软件层的聚合算法与仪表盘展示,延伸至物理空间的触达手段同样重要。通过 Zabbix Webhook 与边缘智能网关的结合,我们以极低的开发成本,完成了一套高可用的立体式监控通知网络,显著优化了现场工程师的排障工作流。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐