要使用短信报警最好是自己的公司有短信的接口,你在向公司开发要短信接口

公司没有短信接口可以去短信报警借助于第三方平台,与邮件报警指定第三方的邮件服务器类似,我们需要指定短信发送服务器,这里我们以中国网建SMS短信通为例,其官网地址如下:
http://sms.webchinese.com.cn/api.shtml
网站介绍了如何申请注册用户,设定登录密钥,以及相关api和返回码的使用说明,通过这个教程可以很方便的学会如何使用脚本发送报警信息。

我介绍是公司自己有短信接口,如何实现zabbix短信报警
要用短信来接收zabbix的报警思路过程:
1、创建一个可以发送短信的脚本
2、要让zabbix来调用这个脚本,和传参方式
3、设置用户和定义报警级别来传参用户数据
4、设置动作有报警就把指定的报警信息传输给用户

编写短信报警的脚本

查看zabbix脚本默认路径

vim /etc/zabbix/zabbix_server.conf

zabbix-3.2.11短信报警
可以在配置文件中设置脚本位置(注意在脚本文件上一个目录必须叫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} <

这里要注意的是传参的问题,在你的开发给你接口一般是用curl命令来调用的,在curl的-d参数中是不能直接用$1的方式来调用位置函数或函数的,首先,编写一个生成脚本后期数据的函数。 这样可以避免出现与shell引用相关的各种麻烦,并且可以更轻松地读取维护脚本,而不是像在尝试中那样在curl的调用行上提供post数据例:

generate_post_data()
{
  cat <

然后在调用curl时很容易使用该函数:

curl -i \
-H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST --data "$(generate_post_data)" "https://xxx:[email protected]/xxxxx/xxxx/xxxx"

加上执行权限

chmod +x sendSMS.sh

更改拥有人,组

chown zabbix.zabiix sendSMS.sh

测试:

./sendSMS.sh 手机号码11位 "" "短信内容:测试"

成功会收到短信
没有短信,先看开发给的短信接口是不是可以正常发短信,可以就用sh -x 来调试脚本哪里有问题

都成功了就可以配置zabbix的控制面板了

首先配置报警媒介类型选择SMS(没有在右上角创建)

zabbix-3.2.11短信报警_第1张图片

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

在来创建用户

zabbix-3.2.11短信报警_第2张图片

创建收件人这里定义的就是发送到脚本的$1的内容,点击add添加用户
zabbix-3.2.11短信报警_第3张图片
zabbix-3.2.11短信报警
可以选择报警的严重性来发给不同的人,或者同一严重性发个多个人(中间用,号隔开)

接下来,创建报警动作的触发器

zabbix-3.2.11短信报警_第4张图片
zabbix-3.2.11短信报警_第5张图片
zabbix-3.2.11短信报警_第6张图片
zabbix-3.2.11短信报警_第7张图片
zabbix-3.2.11短信报警_第8张图片
zabbix-3.2.11短信报警_第9张图片
zabbix-3.2.11短信报警_第10张图片
zabbix-3.2.11短信报警_第11张图片
zabbix-3.2.11短信报警_第12张图片

最后测试一下

kill掉一个agent
出现这种下图这种问题就是你的脚本执行有问题,单独执行看是否成功。

zabbix-3.2.11短信报警_第13张图片
出现sent表示zabbix发送成功,可还是没有收到短信,可以在脚本里面加上个touch一个文件,看zabbix是否有调用到脚本。在查看一下配置文件中alterscriptspath路径和你脚本路径是不是一样的,脚本的上一级目录名字是不是alterscripts,脚本的有没有x权限,是不是属于zabbix用的。
zabbix-3.2.11短信报警