在百度上搜索查看了很多文章之后,我终于在本地服务上实现了zabbix短信发送配置。其中有很多小的细节导致了我配置的并不是那么顺利,这篇文章就是解决这个问题的。按照这篇文章相信你一定能快速配置出短信发送的功能。
1. 创建新的通信渠道
默认的通信渠道有EmailJabberSMS。这里的SMS指的明显是一个通信设备,通常情况下我们是没有这个设备的。所以对于我们来说短信发送的实现原理就是:在zabbix问题触发后自动调用我们的短信发送脚本,通过脚本发送http请求来发送告警短信。
所以首先,我们需要指定我们的脚本位置以及脚本入参。
点击按钮创建新的媒体类型
类型选择【script】,【Script name】填写所执行的脚本名称(执行脚本一定要放在AlertScriptsPath目录下-可以在/etc/zabbix/zabbix_server.conf文件中查看,默认为/usr/lib/zabbix/alertscripts )。最后添加3个参数,分别是【收信人】、【问题名称】、【问题描述】。
2. 创建用户组用户
在这个例子中,我们需要监控某个linux服务器,因此我们需要一个运维组和负责运维的同学。(因为Admin的权限过大,所以我们不能用Admin用户去干所有的事情)我们需要创建一个用户组,只让这个组的同学负责linux服务相关的事情。
创建Ops运维组
给Ops添加权限
创建运维同学【看门狗】
添加【看门狗】同学的【手机号】(如果看门狗同学有多个手机号的话,可以用逗号隔开配置多个)、【工作时间】、【负责的问题级别】
3. 在zabbix-server上配置我们的脚本
由于测试环境,我们将推送短信消息的部分替换为在/tmp/SMS-SEND.log
打印短信内容。
#!/bin/bash
CAT="/bin/cat"
CURL="/usr/bin/curl"
MOBILE_NUMBER=$1 # 手机号码
MESSAGE_SUBJECT=$2 # 短信主题
MESSAGE_UTF8=$3 # 短信内容
MESSAGE(){
${CAT} <<EOF
{
"bizType": 0,
"smsSubject": "$MESSAGE_SUBJECT",
"smsContent": "$MESSAGE_UTF8",
"userMobile": "$MOBILE_NUMBER"
}
EOF
}
# Send it
#${CURL} -i
#--header 'Content-Type: application/json'
#--header 'Accept: application/json'
#-X POST -d "$(MESSAGE)" "你们开发提供的短信接口地址"
echo "$(MESSAGE) has send! n" >> /tmp/SMS-SEND.log
修改sendSMS.sh脚本权限
代码语言:javascript复制chown zabbix:zabbix sendSMS.sh
chmod x sendSMS.sh
4. 创建触发器的动作
选择【triggers】-点击创建动作。
填写自定义名称,如果不配置条件那么这个动作会响应所有触发器。
第一行是在问题发送多久之后推送短信通知,这里是测试环境,我们就设置为60s。
填写推送的用户或用户组。这里推荐使用用户组,以后如果运维团队有新的同学加入,则给新同学创建账号并加入运维组即可。
当问题恢复时,通知跟这个问题有关的所有人
5. 效果验证
好了让我们来停止一个zabbix-agent来看看效果。
代码语言:javascript复制[root@vm2 ~]# systemctl stop zabbix-agent
等待5分钟后,zabbix发出警告
后台/tmp/SMS-SEND.log
文件中打印出如下日志
然后恢复zabbix-agent,发送恢复短信
相关文章
- zabbix-v4.0系列-自动发现并监控jvm8-简明扼要版
- zabbix-v4.0系列-zabbix如何监控mongodb-v4.0.13分片集群1
- zabbix-v4.0系列-zabbix4.0安装部署