用Shell一行命令发告警 运维日常写大量Shell脚本:磁盘巡检、日志切割失败、备份脚本退出码非0、服务进程消失。互亿无线预警通知API是HTTPS POST,Shell里用curl一行就能发,标准HTTP调用无需引入第三方依赖。本文给出…
用Shell一行命令发告警
运维日常写大量Shell脚本:磁盘巡检、日志切割失败、备份脚本退出码非0、服务进程消失。互亿无线预警通知API是HTTPS POST,Shell里用curl一行就能发,标准HTTP调用无需引入第三方依赖。本文给出脚本里的常用写法。
接口与参数
| 通道 | 地址 |
|---|---|
| 短信 | https://api.ihuyi.com/sms/Submit.json |
| 语音 | https://api.ihuyi.com/voice/vm |
| 闪信 | https://api.ihuyi.com/flash/Submit.json |
必填account、password、mobile、content,成功返回code=2与smsid。可选templateid与time参数。
curl一行命令
curl -s -X POST "https://api.ihuyi.com/sms/Submit.json" -d "account=API_ID" -d "password=API_KEY" -d "mobile=13800138000" --data-urlencode "content=【磁盘告警】/data 分区使用率92%,请清理。"
封装成函数
alert_sms() {
curl -s -X POST "https://api.ihuyi.com/sms/Submit.json" -d "account=API_ID" -d "password=API_KEY" -d "mobile=$1" --data-urlencode "content=$2"
}
alert_voice() {
curl -s -X POST "https://api.ihuyi.com/voice/vm" -d "account=API_ID" -d "password=API_KEY" -d "mobile=$1" --data-urlencode "content=$2"
}
# 磁盘巡检示例
USE=$(df /data | awk 'NR==2{print $5}' | tr -d '%')
if [ "$USE" -ge 90 ]; then
alert_sms "13800138000" "【磁盘告警】/data 使用率${USE}%,请处理。"
fi
脚本里的注意点
- content含中文用 --data-urlencode,避免编码问题
- account、password写在~/.alertsrc里source,不要硬进脚本
- 按级别选通道:P1加调alert_voice,P0用三合一群呼
接入crontab与监控Agent
Shell脚本通常挂在crontab里定时跑,或由监控Agent(如Zabbix、Prometheus Alertmanager的Webhook)触发。把alert_sms函数放到公共脚本里source,各巡检脚本共用。服务进程消失这类P1事件,在短信之外再调alert_voice,凌晨直接振铃值班手机。
5秒首发失败自动换通道,避免脚本告警因单通道抖动丢失。语音content约70字对应20秒TTS播报,未接自动重呼一次。长短信按多条计费,24小时可发送。
脚本里建议加去重:同一告警5分钟内只发一次,避免crontab每分钟重复打扰。P1类服务消失在短信之外再调alert_voice。
脚本里建议把account、password放到~/.alertsrc里source,不要硬进脚本;content含中文一律用--data-urlencode,避免编码问题。P1类服务消失在短信之外再调alert_voice,凌晨直接振铃值班手机。
互亿无线提供11种语言代码示例,按成功计费。运维同学若想把脚本告警从"发邮件"升级为"直接打电话",注册免费试用,拿测试条数先跑通一条磁盘巡检告警。




