要使用短信报警最好是本身的公司有短信的接口,你在向公司开发要短信接口html
公司没有短信接口能够去短信报警借助于第三方平台,与邮件报警指定第三方的邮件服务器相似,咱们须要指定短信发送服务器,这里咱们以中国网建SMS短信通为例,其官网地址以下:
http://sms.webchinese.com.cn/api.shtml
网站介绍了如何申请注册用户,设定登陆密钥,以及相关api和返回码的使用说明,经过这个教程能够很方便的学会如何使用脚本发送报警信息。web
我介绍是公司本身有短信接口,如何实现zabbix短信报警
要用短信来接收zabbix的报警思路过程:
一、建立一个能够发送短信的脚本
二、要让zabbix来调用这个脚本,和传参方式
三、设置用户和定义报警级别来传参用户数据
四、设置动做有报警就把指定的报警信息传输给用户shell
查看zabbix脚本默认路径json
vim /etc/zabbix/zabbix_server.conf
能够在配置文件中设置脚本位置(注意在脚本文件上一个目录必须叫alertscripts)vim
vim sendSMS.sh #!/bin/bash #version 1.1 #2018/7/24 CAT="/bin/cat" CURL="/usr/bin/curl" MOBILE_NUMBER=$1 # 手机号码 MESSAGE_UTF8=$3 # 短信内容 MESSAGE(){ ${CAT} <<EOF { "bizType": 0, "smsContent": "$MESSAGE_UTF8", "userMobile": "$MOBILE_NUMBER" } EOF } # Send it ${CURL} -i \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ -X POST -d "$(MESSAGE)" "大家开发提供的短信接口地址"
这里要注意的是传参的问题,在你的开发给你接口通常是用curl命令来调用的,在curl的-d参数中是不能直接用$1的方式来调用位置函数或函数的,首先,编写一个生成脚本后期数据的函数。 这样能够避免出现与shell引用相关的各类麻烦,而且能够更轻松地读取维护脚本,而不是像在尝试中那样在curl的调用行上提供post数据例:api
generate_post_data() { cat <<EOF { "account": { "email": "$email", "screenName": "$screenName", "type": "$theType", "passwordSettings": { "password": "$password", "passwordConfirm": "$password" } }, "firstName": "$firstName", "lastName": "$lastName", "middleName": "$middleName", "locale": "$locale" } EOF }
而后在调用curl时很容易使用该函数:bash
curl -i \ -H "Accept: application/json" \ -H "Content-Type:application/json" \ -X POST --data "$(generate_post_data)" "https://xxx:xxxxx@xxxx-www.xxxxx.com/xxxxx/xxxx/xxxx"
加上执行权限服务器
chmod +x sendSMS.sh
更改拥有人,组app
chown zabbix.zabiix sendSMS.sh
./sendSMS.sh 手机号码11位 "" "短信内容:测试"curl
成功会收到短信
没有短信,先看开发给的短信接口是否是能够正常发短信,能够就用sh -x 来调试脚本哪里有问题
都成功了就能够配置zabbix的控制面板了
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
建立收件人这里定义的就是发送到脚本的$1的内容,点击add添加用户
能够选择报警的严重性来发给不一样的人,或者同一严重性发个多我的(中间用,号隔开)
kill掉一个agent
出现这种下图这种问题就是你的脚本执行有问题,单独执行看是否成功。
出现sent表示zabbix发送成功,可仍是没有收到短信,能够在脚本里面加上个touch一个文件,看zabbix是否有调用到脚本。在查看一下配置文件中alterscriptspath路径和你脚本路径是否是同样的,脚本的上一级目录名字是否是alterscripts,脚本的有没有x权限,是否是属于zabbix用的。