zabbix报警信息聚合并及企业微信接收

1、代码下载地址

https://gitee.com/yyping2019/zabbix_police.git

2、开发的目的

本次开发主要基于作者_简_述的版本修改而来,主要增加了企业微信接收报警、邮件接收报警、slack接收报警,同时还区分不同报警足接收不同报警信息
3、zabbix配置
3-1.zabbix Actions
对Actions进行特殊设置,Default subject极为重要,是识别收敛的标示。
zabbix报警信息聚合并及企业微信接收

Default subject

{EVENT.ID}_1

Default message

triggervalue|{TRIGGER.VALUE}#hostname|{HOSTNAME1}#ipaddress|{IPADDRESS}#hostgroup|{TRIGGER.HOSTGROUP.NAME}#triggernseverity|{TRIGGER.NSEVERITY}#triggername|{TRIGGER.NAME}#triggerkey|{TRIGGER.KEY1}#triggeritems|{ITEM.NAME}#itemvalue|{ITEM.VALUE}#eventid|{EVENT.ID}

Recovery subject

{EVENT.ID}_0

Recovery message

triggervalue|{TRIGGER.VALUE}#hostname|{HOSTNAME1}#ipaddress|{IPADDRESS}#hostgroup|{TRIGGER.HOSTGROUP.NAME}#triggernseverity|{TRIGGER.NSEVERITY}#triggername|{TRIGGER.NAME}#triggerkey|{TRIGGER.KEY1}#triggeritems|{ITEM.NAME}#itemvalue|{ITEM.VALUE}#eventid|{EVENT.ID}

3-2.Media types
这里只需要传递subject 参数就可以了。
zabbix报警信息聚合并及企业微信接收
police.py--报警函数:zabbix告警是调用此函数,将事件id推入redis。
redis 安装查看第三部分

/usr/local/zabbix/share/zabbix/alertscripts/police.py#!/usr/bin/env python#coding:utf-8import redisimport syssubject=sys.argv[1]r = redis.StrictRedis(host=‘**.**.**.**‘, port=6379)r.set(subject,subject)

4、操作部分
4-1.环境安装

#安装python、mysql、redis模块pip install redispip install pymysqlyum install gcc python-develpip install requests安装python3.6

4-2、程序部署
a、zabbix_server 需要安装redis,配置无密码
b、除police.py需要放到zabbix目录,其他程序放到自定义目录即可
c、程序运行执行方式:/usr/local/python3/bin/python /data/police/allpolice.py
5、配置详解
5-1、config.py

redis_ip = "127.0.0.1" #redis 的ip地址redis_port = 6379 #redis 的端口mysql_ip = "127.0.0.1" #zabbix 的mysql地址mysql_port = 3306mysql_user = "zabbix"mysql_pwd = "xiyou2018"mysql_db = "zabbix"actionid = ["3"] #zabbix db select actionid,name from actions;通过查找到对应的actionid值send_to_users_0 = ["x1@qq.com","x2@qq.com"] #告警用户邮箱, send_to_users_<num> 从0开始,0对应actionid列表中的第一个值,依次类推,这就实现了不同的actionid对应不同的报警用户组# send_to_users_1 = ["x3@qq.com","x4@qq.com"]slack_status = 1 #是否使用slack报警,值为1|0,1表示使用slack_webhook = ["https://hooks.slack.com/services/T67AS4FPD/BHPSPTQQY/v6x7XGjCxXPoyYTC7Mwxxx"]email_status = 1 #是否使用邮件报警,值为1|0,1表示使用recevier_server_smtp = "smtp.exmail.qq.com" #发送者邮箱服务器recevier_user = "tt@yxorange.com" #发送者邮箱帐号recevier_pwd = "asdfasdfasdf"weixin_status = 1 #是否使用企业微信报警,值为1|0,1表示使用weixin_webhook = ["https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=deac9049-79cd-4167-b3ed-830336883240sadfasddfasdf",] #企业微信多个群组,只需要把对应的webhook地址放进即可,action依次对应

相关文章