监控告警要落到手机 Zabbix、Prometheus是运维常用的监控系统,它们能检测出阈值越限、服务不可用,但默认的告警渠道多为邮件或Web控制台,值班人员未必及时看到,尤其在夜间。把监控告警对接到互亿无线预警通知API,就能让阈值告警直…
监控告警要落到手机
Zabbix、Prometheus是运维常用的监控系统,它们能检测出阈值越限、服务不可用,但默认的告警渠道多为邮件或Web控制台,值班人员未必及时看到,尤其在夜间。把监控告警对接到互亿无线预警通知API,就能让阈值告警直接以短信、语音、闪信推送到负责人手机,不必盯着监控页面。
本文分别说明Zabbix自定义脚本和Prometheus Alertmanager Webhook两种接入方式。
Zabbix:自定义告警脚本
Zabbix支持通过Media Type脚本发送告警。在AlertScriptsPath目录下新建一个Python脚本,接收Zabbix传入的收件人号码和告警内容,转发给预警接口:
#!/usr/bin/env python3
import sys, requests
to_mobile = sys.argv[1]
subject = sys.argv[2]
body = sys.argv[3]
requests.post("https://api.ihuyi.com/sms/Submit.json", data={
"account": "API_ID", "password": "API_KEY",
"mobile": to_mobile, "content": f"【Zabbix告警】{subject} {body}"
}, timeout=(3, 5))
在Zabbix的Administration中新建Media Type,类型选Script,脚本名填上述文件;然后给用户分配该Media,并在Action里把告警发送到对应用户。严重级别为Disaster的告警,可在脚本里改调 https://api.ihuyi.com/voice/vm 发语音,让值班人员电话振铃注意到。
Prometheus:Alertmanager Webhook
Prometheus生态用Alertmanager管理告警,可配置Webhook指向自己的中转服务,再由中转服务调用预警API:
# alertmanager.yml 片段
receivers:
- name: 'ihuyi-alert'
webhook_configs:
- url: 'http://your-server:8000/alert'
send_resolved: true
中转服务接收Alertmanager的POST,解析告警级别后选择通道:
from flask import Flask, request
import requests
app = Flask(__name__)
@app.route("/alert", methods=["POST"])
def alert():
payload = request.get_json()
for a in payload.get("alerts", []):
sev = a["labels"].get("severity")
msg = a["annotations"].get("summary", "")
url = ("https://api.ihuyi.com/voice/vm" if sev == "critical"
else "https://api.ihuyi.com/sms/Submit.json")
requests.post(url, data={"account": "API_ID", "password": "API_KEY",
"mobile": "13800138000", "content": f"[{sev}]{msg}"}, timeout=(3, 5))
return "ok"
联动配置要点
对接监控系统时,建议注意以下事项:
- 告警级别与通道映射:critical走语音或三合一,warning走短信。
- send_resolved设为true,故障恢复时也发一条通知,形成闭环。
- 在中转服务里做告警去重,避免Prometheus重复触发导致短信轰炸。
- 测试时先用Zabbix/Prometheus自带的测试告警触发一次,确认手机能收到。
互亿无线提供11种语言代码示例,多数团队从注册到监控告警跑通平均30分钟。注册免费试用,领取测试条数后即可把现有Zabbix或Prometheus告警对接到手机。




