zabbix-3.2.11短信报警

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix-3.2.11短信报警相关的知识,希望对你有一定的参考价值。

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

公司没有短信接口可以去短信报警借助于第三方平台,与邮件报警指定第三方的邮件服务器类似,我们需要指定短信发送服务器,这里我们以中国网建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:[email protected]/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用的。
技术分享图片

以上是关于zabbix-3.2.11短信报警的主要内容,如果未能解决你的问题,请参考以下文章

python写的zabbix短信报警程序,收不到短信

zabbix短信报警统计以及报表展示

脚本2分钟实现电话短信报警

zabbix利用阿里云短信服务添加短信报警

Zabbix-3.X--短信报警设置

基于金笛短信Web中间件实现Cacti短信报警