最近有个内网项目搭建了一套zabbix监控,由于不能访问互联网,导致告警无法使用邮件,钉钉类的方式推送告警通知;了解到之前项目上采购过一个金笛短信设备,拿来一试。
官方文档说明
1 2 3 4 5 6
| 短信发送URL: http://127.0.0.1:8060/send?password=[password]&text=[text]&recipient=[cell-phone number]&encoding=U 短信接收URL: http://127.0.0.1:8060/read?password=[password]&gateway=modem[id]&count=[number] 短信发送状态URL: http://127.0.0.1:8060/sendstatus?msgid=[msgid]
|
使用浏览器测试短信发送
1
| http://10.206.2.108:8060/send?password=1&text=[tes20200611]&recipient=18xxxxxxxxx&encoding=U
|
手机可以正常收到。
编写短信发送脚本
grep -E AlertScriptsPath /etc/zabbix/zabbix_server.conf
cd /usr/lib/zabbix/alertscripts
vim sendSMS.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| [root@zw_zabbix_server alertscripts]# vim sendSMS.sh #!/bin/bash
# 脚本的日志文件 LOGFILE="/tmp/SMS.log" :>"$LOGFILE" exec 1>"$LOGFILE" exec 2>&1
MOBILE_NUMBER=$1 # 手机号码 MESSAGE_UTF8=$3 # 短信内容 XXD="/usr/bin/xxd" CURL="/usr/bin/curl" TIMEOUT=5
# 短信内容要经过URL编码处理 MESSAGE_ENCODE=$(echo "$MESSAGE_UTF8" | ${XXD} -ps | sed 's/\(..\)/%\1/g' | tr -d '\n')
# SMS API URL="http://10.206.2.108:8060/send?password=1&text=${MESSAGE_ENCODE}&recipient=$MOBILE_NUMBER&encoding=U"
# Send it set -x ${CURL} -s --connect-timeout ${TIMEOUT} "${URL}"
|
chmod +x sendSMS.sh
./sendSMS.sh 18xxxxxxxxx "" "test zabbix sendmail"
手机可以正常收到。
配置zabbix
管理-报警媒介类型-创建媒体类型
脚本参数
1 2 3 4 5 6 7
| 名称:sendSMS 类型:脚本 脚本名称:sendSMS.sh 添加以下3个参数,分别对应sendSMS.sh脚本需要的3个参数 收短信电话号码:{ALERT.SENDTO} 主题:{ALERT.SUBJECT} #好像没什么用 短信内容:{ALERT.MESSAGE}
|
设置用户报警媒介
触发告警器
1 2 3 4 5 6 7 8 9 10 11
| 默认接收人:藏_故障{TRIGGER.STATUS}:服务器 {HOSTNAME1}:{TRIGGER.NAME} 默认信息: 告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID} 请至Montoring-Events中查看详细情况。
|
1 2 3 4 5 6 7 8 9 10
| 默认接收人:藏_故障{TRIGGER.STATUS}:服务器 {HOSTNAME1}:{TRIGGER.NAME} 告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID} 报警已恢复,请放松心情。
|
测试告警
关闭agent,测试告警
测试成功。
ps:第二天测试的时候发现短信平台成功发送了,但是手机收不到短信,咨询厂家,怀疑是运营商拦截了。