需求:在zabbix服务器配置短信报警,当服务出现故障达到预警级别是通过发送短信的形式告诉运维人员,以便及时处理.
一、zabbix服务器端配置短信脚本
我的短信脚本放置位置为 /etc/zabbix/alertscripts,这个必须在/etc/zabbix/zabbix_server.conf配置文件中放开 AlertScriptsPath=/etc/zabbix/alertscripts
进入/etc/zabbix/alertscripts目录,创建短信告警脚本sendSMS.sh,内容入下:
#!/bin/bash # 脚本的日志文件
LOGFILE="/var/log/zabbix/sms.log"
:>"$LOGFILE"
exec >"$LOGFILE"
exec >& MOBILE_NUMBER=$ # 手机号码
MESSAGE_UTF8=$3 # 短信内容
XXD="/usr/bin/xxd"
CURL="/usr/bin/curl"
TIMEOUT= # 短信内容要经过URL编码处理,除了下面这种方法,也可以用curl的--data-urlencode选项实现。
MESSAGE_ENCODE=$(echo "$MESSAGE_UTF8" | ${XXD} -ps | sed 's/\(..\)/%\1/g' | tr -d '\n') # SMS API 接口用户名和秘钥
ACCOUNT="xxx"
PASS="1234xxxooxx" URL="http://10.73.17.10/msg/HttpBatchSendSM?account=${ACCOUNT}&pswd=${PASS}&mobile=${MOBILE_NUMBER}&msg=${MESSAGE_ENCODE}&needstatus=true" # Send it
set -x
${CURL} -s --connect-timeout ${TIMEOUT} "${URL}"
然后执行下面的命令,设置脚本和日志文件权限:
touch /tmp/SMS.log
chown zabbix:zabbix /tmp/SMS.log
chown zabbix:zabbix /etc/zabbix/alertscripts/sendSMS.sh
chmod +x /etc/zabbix/alertscripts/sendSMS.sh
手动测试脚本:
# /etc/zabbix/alertscripts/sendSMS.sh xxxxxxxxxxx "" "尊敬的客户,您的订单已出库发货,正在配送中,请您耐心等待。"
脚本第一个参数为手机号码;第二个参数不会用到,设为空就行;第三个参数为短信内容。
脚本执行后,到日志文件/tmp/SMS.log里查看返回值,如果大于0代表发送成功,小于0发送失败。
二、在zabbix web界面配置告警方式(Media types)
选择【Administration】->【Media types】-> 【Create media type】,创建短信告警方式,如下图:
注意:"Name"给告警方式起个名字,"Type"选择Script类型,"Script name"填写上面创建的脚本名.
三、配置用户的手机号码
选择【Administration】->【Users】,进入用户配置界面,在"Media"选项卡中配置用户接收告警的手机号码。点击"Add",在弹出的窗口中输入用户手机号,见下图:
四、配置告警动作(Action)
选择【Configuration】->【Actions】,进入告警动作配置界面,创建新的action。
1、配置短信内容(Default message)
2、配置告警条件(Conditions)
3、配置告警接收人(Action operations)
参考文档:http://www.sxt.cn/u/756/blog/3198