预警通知与监控系统联动:Zabbix Prometheus接入实践

Zabbix、Prometheus 这些监控工具能发现问题,但默认报警往往只停留在页面和邮件里,值班人不盯着屏幕就会错过。把预警通知接口接进去,让监控一发现异常就自动打电话、发短信,是运维自动化里性价比很高的一步。 监控联动的整体架构 思路…

Zabbix、Prometheus 这些监控工具能发现问题,但默认报警往往只停留在页面和邮件里,值班人不盯着屏幕就会错过。把预警通知接口接进去,让监控一发现异常就自动打电话、发短信,是运维自动化里性价比很高的一步。

监控联动的整体架构

思路很简单:监控系统触发告警时,调用一个我们自己的中转脚本或 Webhook,由中转脚本再去请求互亿无线预警通知接口。这样解耦的好处是,通道选择、去重、升级策略都集中在中转层管理,监控系统本身只负责"发现异常"。中转层还可以按告警名称决定走语音还是短信,不必在监控侧写死通道逻辑。

Zabbix 联动配置示例

在 Zabbix 里创建一个 Media Type,类型为 Script,脚本内容如下:

#!/usr/bin/env python3
import sys, os, requests
subject = sys.argv[1]
body = sys.argv[2]
try:
    requests.post("https://api.ihuyi.com/voice/vm", data={
        "account": os.environ["IHUYI_APIID"],
        "password": os.environ["IHUYI_APIKEY"],
        "mobile": "值班人手机号",
        "content": (subject + body)[:70]
    }, timeout=(5, 10))
except requests.RequestException as e:
    print("alert send failed:", e)

保存为 alert.py 并赋予执行权限,在 Media Type 里把它设为告警脚本,绑定到值班用户即可。建议把账号密钥放进环境变量,不要写死在脚本里。

Prometheus Alertmanager 联动

Alertmanager 支持 webhook 接收器,部署一个小服务接收告警 JSON,提取摘要后调用语音接口即可。配置要点:

  • webhook 路径在 Alertmanager 配置里指向你的中转服务地址。
  • 中转服务解析 alerts 数组,把 annotations.summary 作为语音播报内容。
  • 对同一告警名设置 group_interval,避免重复电话轰炸。
  • 严重等级为 critical 时走语音,warning 级别只发短信。

联动时的常见坑

  • Zabbix 默认把告警分发给用户,要确认绑定的值班用户手机号是当前在用的。
  • Alertmanager 的 group_by 配置不当会导致同一告警反复触发,配合 inhibit_rules 抑制衍生告警。
  • 中转服务要做超时与异常捕获,监控侧不能因为发送失败而阻塞告警队列。

联动后的效果

监控发现 CPU 飙高、磁盘快满、服务端口不通时,几秒内值班人的手机就会响起来电铃声,同时收到一条带主机名和指标的短信。互亿无线三网直连、通道故障自动备用,让监控告警不再"看得见、听不见"。

中转层该沉淀哪些能力

监控联动接入后,建议把中转层做成一个独立小服务,长期沉淀三类能力:通道路由(按等级选语音或短信)、去重合并(抑制告警风暴)、升级链路(未确认自动升级)。这样以后接新的监控系统,直接复用这个中转服务即可。

  • Zabbix 用脚本传参,Prometheus 用 webhook,两种入口都指向同一个中转服务。
  • 中转服务记录每条告警的流水号,方便和控制台发送记录对账。
  • 对监控侧屏蔽通道细节,监控只管发摘要,不用关心底层接口地址。

互亿无线三网直连、智能路由,中转层只需要处理业务逻辑,线路质量交给服务商兜底。

联动后的演练

接好之后要做一次演练:在测试环境制造一个 CPU 飙高,看值班人手机几秒内是否响起来电。发现链路断在哪个环节,就回去补哪一段。演练每月一次,能及时发现值班表过时、手机号失效这类隐蔽问题。

把监控数据转化为真实触达的告警电话,注册免费试用接一条告警链路试试。

立即开始,免费体验

新用户注册即送免费测试额度,3分钟快速接入,专属客服全程指导

免费试用 →