用Python把服务器告警发出去 运维团队常用Python写监控脚本:定时采CPU、内存、磁盘使用率,超阈值后触发动作。互亿无线预警通知API走HTTPS POST,Python生态里用requests即可调用,标准HTTP请求无需引入第三…
用Python把服务器告警发出去
运维团队常用Python写监控脚本:定时采CPU、内存、磁盘使用率,超阈值后触发动作。互亿无线预警通知API走HTTPS POST,Python生态里用requests即可调用,标准HTTP请求无需引入第三方依赖。本文给出服务器告警的完整代码示例。
接口与参数
短信提交接口 https://api.ihuyi.com/sms/Submit.json,语音提交接口 https://api.ihuyi.com/voice/vm。核心参数:
- account:控制台拿到的API ID
- password:控制台拿到的API Key
- mobile:接收告警的手机号
- content:短信为模板内容,语音为TTS播报文本
响应code=2表示提交成功并返回smsid。闪信接口为 https://api.ihuyi.com/flash/Submit.json,参数一致。
基础发送示例
import requests
API = "https://api.ihuyi.com/sms/Submit.json"
AUTH = {"account": "API_ID", "password": "API_KEY"}
def send_alert(mobile, text):
data = dict(AUTH, mobile=mobile, content=text)
r = requests.post(API, data=data, timeout=10).json()
if r.get("code") == 2:
print("告警已提交", r.get("smsid"))
else:
print("发送失败", r)
return r
send_alert("13800138000", "【服务器告警】web-01 CPU使用率92%,请处理。")
封装成多通道告警函数
按服务器故障级别选通道:
VOICE = "https://api.ihuyi.com/voice/vm"
def alert(level, mobile, text):
if level == "P0":
# 三合一:语音强提醒,模板同步下发短信与闪信
requests.post(VOICE, data=dict(AUTH, mobile=mobile, content=text), timeout=10)
elif level == "P1":
# 双呼:短信留档 + 语音振铃
send_alert(mobile, text)
requests.post(VOICE, data=dict(AUTH, mobile=mobile, content=text), timeout=10)
else:
send_alert(mobile, text)
alert("P1", "13800138000", "数据库主从同步延迟300秒。")
监控脚本里怎么用
- 采集脚本每分钟读一次 /proc/stat 与磁盘使用率
- 超阈值连续两个周期才告警,避免抖动误报
- 调用alert()按级别发短信或打电话
- 把smsid与故障ID写入日志,便于事后追溯
语音content约70字对应20秒播报,无需录音;未接自动重呼一次,振铃60秒。长短信按多条计费,24小时可发送。5秒首发失败自动换通道,避免单通道抖动漏掉P0。
脚本里建议把告警手机号做成配置列表,按级别路由:P0群呼值班组,P1通知当值,P3只发短信。smsid写入日志后,可与监控系统的事件ID关联,事后复盘时一查就知道哪条告警通过哪条通道送达。
脚本里建议把告警手机号做成配置列表,按级别路由:P0群呼值班组,P1通知当值,P3只发短信。smsid写入日志后,可与监控系统的事件ID关联,事后复盘时一查就知道哪条告警通过哪条通道送达。
互亿无线提供11种语言代码示例,按成功计费、失败不计费。运维同学想把告警从"群机器人@人"升级为"直接打电话",注册免费试用,拿测试条数先跑通一台服务器的告警。




