zabbix之zabbix_sender主动式与微信公众号报警

环境

系统为ubuntu1804, zabbix版本为4.0:

  1. zabbix_server在gs外网. 客户端为全国各地区的服务器. 客户端是内网环境
  2. 客户端内网 server无法访问, agent和proxy模式用不了. 所以采用了zabbix_sender客户端主动发送状态的模式进行监控报警

微信公众号接口

自己开发的, 定义了告警字段和信息, 在脚本里使用curl POST上报的方式发送告警信息. nice
微信公众号接口字段信息

zabbix_server端的一些配置

zabbix4.0 安装步骤略过
web页面的配置如下:

  1. 新增模板----名称
    在这里插入图片描述
  2. 创建监控项
    监控项名称:
    类型: 选择zabbix采集器 英文是zabbix trapper
    键值: 这是最主要的一个, 这里的键值是key, 客户端使用sender上报信息会校验这个key是否一致.
    信息类型: 选择文本类型, 就是txt. 不然会报错. 咱也不知道为啥~
    在这里插入图片描述监控项
  3. 创建触发器
    触发器就是, 满足这个状态, 就不会告警, 不满足就不爽然后报警抓起来.
    首先. 我的客户端使用zabbix_sender上报的格式为字符串, 因为微信公众号接口定义了上报的类型和格式, 所以为了我的报警脚本更友好地运行, 这里在zabbix_sender那里直接确定上报格式
    zabbix_sender上报格式为:
    title==报错开头,ip==主机名称,alarmType==warning,remark== 问题详情
    上报上来的信息是这样的一个字符串. 所以我这里触发器配置为判断这个上报的字符串是不是有某个字段就可以啦. 1表示没有, 就报警抓起来. 0表示有就是爽了.
    不要忘了选择监控项哦!!!
    这个是表达式, 意思是检查这个str里包不包含warning这个字符. 有就报警, 没有就待着
    {zabbix_sender_sc:ittest2020.str(warning)}=1
    到这里模板监控项触发器都整好了. 当然如果只有几台主机则可以直接在主机那里创建加进去就行.
    我这里服务器几百台. 所以直接创建个模板链接到主机那里更方便!
    在这里插入图片描述

客户端的监控脚本

本菜鸡这里的脚本主要监控的是gs项目的稳定性和显卡驱动是否活着.
所以脚本比较简单. 大佬们想监控什么写脚本就可以
zabbix_sender的用法不多赘述.
就说向服务端发送警告信息的命令是酱紫的~
zabbix_sender -z server_IP -s server添加的主机名(开心就好) -k ittest2020 -o "title==系统报错,ip==客户端名字, 自己认识就行,alarmType==warning,remark== " -vv
-z 是server_ip
-s 后面跟服务端添加的主机名称. 主机名称 不是可见名称, , 要通过这个主机名认是谁
-k 就是键值, 上面的那个键值
-o 后面跟上报的内容
-vv 上报结果

server端的报警脚本

zabbix调用脚本的默认目录在配置文件里自己找.
脚本内容入下
打马赛克的是我们接口的地址.
这里的$1 $2 $3 是zabbix里面内置的那个东西. 下面讲
在这里插入图片描述

#!/bin/bash
#title=程序重启,ip=192.168.192.23,alarmType=warning,remark=四川程序出现重启
echo $1 >>/tmp/1.txt
#echo "11111111111#####################" >>/tmp/1.txt
echo $2 >>/tmp/1.txt
#echo "22222222222#####################" >>/tmp/1.txt
echo $3 >>/tmp/1.txt
#echo "3333333333#####################" >>/tmp/1.txt
title=`echo $3 | awk -F",," '{print $1}' | awk -F"==" '{print $2}'`
alarmIP=`echo $3 | awk -F",," '{print $2}' | awk -F"==" '{print $2}'`
alarmType=`echo $3 | awk -F",," '{print $3}' | awk -F"==" '{print $2}'`
alarmPlace=`echo $3 | awk -F",," '{print $4}' | awk -F"==" '{print $2}'`
remark=`echo $3 | awk -F",," '{print $5}' | awk -F"==" '{print $2}'`
alarmTime=`date "+%Y-%m-%d-%H:%M:%S"`>/tmp/2.txt
#alarmPlace=`echo $3 | awk -F",," '{print $4}' | awk -F"==" '{print $2}'`
echo $title >>/tmp/2.txt
echo $alarmIP >>/tmp/2.txt
echo $remark >>/tmp/2.txt
echo $alarmPlace >>/tmp/2.txt
echo $alarmType >>/tmp/2.txt
echo $1 >>/tmp/2.txt
zabbix_sender -z 111.160.23.206 -s "test_trapper" -k ittest2020 -o "" -vv
#remark=`/etc/zabbix/script/translate.sh "$remark"`
curl http://公众号地址:端口/sti/monitorntc/send -X POST -H "Content-Type:application/json"  -d '{"title":"'$title'","alarmIP":"'$alarmIP'","remark":"'"$remark"'","alarmPlace":"'$alarmPlace'","alarmType":"'$alarmType'","alarmTime":"'$alarmTime'"}'
echo $? >>/tmp/2.txt

echo $remark >>/tmp/2.txt
echo curl http://129.226.138.179:8585/sti/monitorntc/send -X POST -H \"Content-Type:application/json\"  -d '{"title":"'$title'","alarmIP":"'$alarmIP'","remark":'$remark'","alarmPlace":"'$alarmPlace'","alarmType":"'$alarmType'","alarmTime":"'$alarmTime'"}'  >> /tmp/2.txt


最后一步web端的配置

  1. 添加脚本
    {ALERT.SENDTO}
    {ALERT.SUBJECT}
    {ALERT.MESSAGE}
    这是脚本参数里的三个在这里插入图片描述

  2. 添加动作
    在这里插入图片描述
    3.设置用户报警媒介
    在这里插入图片描述

在这里插入图片描述添加wcat脚本报警. 收件人为管理员.

重点来啦!!!
这里就是上面的$1 $2 $3 的内容
我这里的$1是Admin, 就是用户名
$2 是监控项名称, 刚刚我设置的是test. 所以$2是test
$3 是消息内容. 这个消息内容是最主要的. 是我们的sender上报的告警信息. 调用的脚本获取的就是$3
重点来啦!!! 真的是重点!!!
{TRIGGER.STATUS}:{ITEM.VALUE1}
这个是zabbix的内置变量. 用来获取的是zabbix_sender上报上来的最新数据!
正常来讲这里应该是别的. 但是 !! but !!! 我这里用的是zabbix_sender! 并且用的是微信公众号接口报警!
zabbix_server只负责一个转接的过程! 就是中介! 就是将sender上报的内容赋值给$3的一个操作
在这里插入图片描述

最后下面的操作, 就调用脚本就行了. 没别的. 完事儿~

最后的最后测试结果

客户端上报
在这里插入图片描述
web页面接收到的内容
在这里插入图片描述
调用脚本结果
在这里插入图片描述
微信公众号反馈结果

在这里插入图片描述
啪~~~一下
感谢月月鸟哥哥的帮助~
月月鸟哥哥主页
https://blog.csdn.net/pengge2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值