在本实验中,短信网关使用了中国网建SMS短信通。不同的服务提供商所开发的短信接口不同,不过大都是http接口,脚本略作修改即可~
效果图如下:
<a href="http://s3.51cto.com/wyfs02/M02/49/39/wKiom1QRMEDAQpLQAAGPBYdRFuk324.jpg" target="_blank"></a>
下面是配置步骤:
一、zabbix服务器端配置短信脚本
假如你的zabbix server配置文件zabbix_server.conf中AlertScriptsPath参数的路径为/etc/zabbix/alertscripts,进入/etc/zabbix/alertscripts目录,创建短信告警脚本sendSMS.sh(附件有下载):
<code>#!/bin/bash</code>
<code>#</code>
<code># Filename: sendSMS.sh</code>
<code># Revision: 1.0</code>
<code># Date: 2014/09/11</code>
<code># Author: Qicheng</code>
<code># Email:</code>
<code># Website: http://qicheng0211.blog.51cto.com/</code>
<code># Description: zabbix短信告警脚本</code>
<code># Notes: 短信网关使用了中国网建SMS短信通</code>
<code># 脚本的日志文件</code>
<code>LOGFILE=</code><code>"/tmp/SMS.log"</code>
<code>:></code><code>"$LOGFILE"</code>
<code>exec</code> <code>1></code><code>"$LOGFILE"</code>
<code>exec</code> <code>2>&1</code>
<code>MOBILE_NUMBER=$1 </code><code># 手机号码</code>
<code>MESSAGE_UTF8=$3 </code><code># 短信内容</code>
<code>XXD=</code><code>"/usr/bin/xxd"</code>
<code>CURL=</code><code>"/usr/bin/curl"</code>
<code>TIMEOUT=5</code>
<code># 短信内容要经过URL编码处理,除了下面这种方法,也可以用curl的--data-urlencode选项实现。</code>
<code>MESSAGE_ENCODE=$(</code><code>echo</code> <code>"$MESSAGE_UTF8"</code> <code>| ${XXD} -</code><code>ps</code> <code>| </code><code>sed</code> <code>'s/\(..\)/%\1/g'</code> <code>| </code><code>tr</code> <code>-d </code><code>'\n'</code><code>)</code>
<code># Uid和Key的值需要自行修改,http://www.smschinese.cn/api.shtml</code>
<code># Uid 网站用户名</code>
<code># Key 接口秘钥</code>
<code>Uid=</code><code>"xxxxxx"</code>
<code>Key=</code><code>"xxxxxx"</code>
<code># SMS API</code>
<code>URL=</code><code>"http://utf8.sms.webchinese.cn/?Uid=${Uid}&Key=${Key}&smsMob=${MOBILE_NUMBER}&smsText=${MESSAGE_ENCODE}"</code>
<code># Send it</code>
<code>set</code> <code>-x</code>
<code>${CURL} -s --connect-timeout ${TIMEOUT} </code><code>"${URL}"</code>
然后执行下面的命令,设置脚本和日志文件权限:
<code>shell</code><code># touch /tmp/SMS.log</code>
<code>shell</code><code># chown zabbix:zabbix /tmp/SMS.log</code>
<code>shell</code><code># chown zabbix:zabbix /etc/zabbix/alertscripts/sendSMS.sh</code>
<code>shell</code><code># chmod +x /etc/zabbix/alertscripts/sendSMS.sh</code>
手动测试脚本:
<code>shell</code><code># /etc/zabbix/alertscripts/sendSMS.sh xxxxxxxxxxx "" "尊敬的客户,您的订单已出库发货,正在配送中,请您耐心等待。"</code>
脚本第一个参数为手机号码;第二个参数不会用到,设为空就行;第三个参数为短信内容。
注意:短信内容要符合要求,不要发送广告或者聊天短信,否则账户可能会被禁用。实测这种订单类短信是不会被屏蔽的。如果短信接收有很高的延迟,可以联系客服。这不是做广告哦,我测试脚本的时候,晚上发出的zabbix告警短信第二天早上才收到,联系客服后问题解决了~
脚本执行后,到日志文件/tmp/SMS.log里查看返回值,如果大于0代表发送成功,小于0发送失败。见下图:
<a href="http://s3.51cto.com/wyfs02/M02/49/39/wKiom1QRLQ-RfKhgAAJhfREMakU221.jpg" target="_blank"></a>
二、配置告警方式(Media types)
选择【Administration】->【Media types】,创建短信告警方式,如下图:
<a href="http://s3.51cto.com/wyfs02/M00/49/3A/wKiom1QRND2hktgCAAH9PtA8KS0015.jpg" target="_blank"></a>
注意,"Name"给告警方式起个名字,"Type"选择Script类型,"Script name"填写上面创建的脚本名。
三、配置用户的手机号码
选择【Administration】->【Users】,进入用户配置界面,在"Media"选项卡中配置用户接收告警的手机号码。点击"Add",在弹出的窗口中输入用户手机号,见下图:
<a href="http://s3.51cto.com/wyfs02/M00/49/3B/wKioL1QRNgWz2v0KAADamyRwGkc103.jpg" target="_blank"></a>
四、配置告警动作(Action)
选择【Configuration】->【Actions】,进入告警动作配置界面,创建新的action。
1、配置短信内容(Default message)
<a href="http://s3.51cto.com/wyfs02/M02/49/3A/wKiom1QROCmDog5UAAF-1mLE7Pw739.jpg" target="_blank"></a>
2、配置告警条件(Conditions)
<a href="http://s3.51cto.com/wyfs02/M00/49/3B/wKioL1QROEXSwE1wAAGchic1RsM276.jpg" target="_blank"></a>
3、配置告警接收人(Action operations)
<a href="http://s3.51cto.com/wyfs02/M01/49/3A/wKiom1QROETAZ63lAAMpCueXQKQ240.jpg" target="_blank"></a>
<a href="http://down.51cto.com/data/2364850" target="_blank">附件:http://down.51cto.com/data/2364850</a>
本文转自 张斌_青岛 51CTO博客,原文链接:http://blog.51cto.com/qicheng0211/1551105