要使用短信报警最好是自己的公司有短信的接口,你在向公司开发要短信接口
公司没有短信接口可以去短信报警借助于第三方平台,与邮件报警指定第三方的邮件服务器类似,我们需要指定短信发送服务器,这里我们以中国网建SMS短信通为例,其官网地址如下:
http://sms.webchinese.com.cn/api.shtml
网站介绍了如何申请注册用户,设定登录密钥,以及相关api和返回码的使用说明,通过这个教程可以很方便的学会如何使用脚本发送报警信息。
我介绍是公司自己有短信接口,如何实现zabbix短信报警
要用短信来接收zabbix的报警思路过程:
1、创建一个可以发送短信的脚本
2、要让zabbix来调用这个脚本,和传参方式
3、设置用户和定义报警级别来传参用户数据
4、设置动作有报警就把指定的报警信息传输给用户
编写短信报警的脚本
查看zabbix脚本默认路径
vim /etc/zabbix/zabbix_server.conf
可以在配置文件中设置脚本位置(注意在脚本文件上一个目录必须叫alertscripts)
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数据例:
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时很容易使用该函数:
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
更改拥有人,组
chown zabbix.zabiix sendSMS.sh
测试:
./sendSMS.sh 手机号码11位 "" "短信内容:测试"
成功会收到短信
没有短信,先看开发给的短信接口是不是可以正常发短信,可以就用sh -x 来调试脚本哪里有问题
都成功了就可以配置zabbix的控制面板了
首先配置报警媒介类型选择SMS(没有在右上角创建)
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
在来创建用户
创建收件人这里定义的就是发送到脚本的$1的内容,点击add添加用户
可以选择报警的严重性来发给不同的人,或者同一严重性发个多个人(中间用,号隔开)
接下来,创建报警动作的触发器
最后测试一下
kill掉一个agent
出现这种下图这种问题就是你的脚本执行有问题,单独执行看是否成功。
出现sent表示zabbix发送成功,可还是没有收到短信,可以在脚本里面加上个touch一个文件,看zabbix是否有调用到脚本。在查看一下配置文件中alterscriptspath路径和你脚本路径是不是一样的,脚本的上一级目录名字是不是alterscripts,脚本的有没有x权限,是不是属于zabbix用的。
转载于:https://blog.51cto.com/12915075/2150569