zabbix添加企业微信发送

简介
微信做为平常使用最频繁的工具,所以但愿将微信接入zabbix报警。
微信企业号
1.申请微信企业号
申请后,请在“个人企业”页面下记录企业号的CorpID

 


这里写图片描述
2.添加通信录

 


这里写图片描述
部门添加完成后,根据实际状况添加子部门或相关成员,以下:

这里写图片描述
3.建立应用

 


在“企业应用”页面建立应用

 


这里写图片描述
注意: 可见范围必定要添加须要收到报警的人员或部门,不然zabbix报警信息没法推送到相关人员。
建立完成以下:

 


这里写图片描述
至此,微信企业号的配置完成。
zabbix server端配置
一.微信报警脚本
默认将脚本放到/usr/local/zabbix/share/zabbix/alertscripts便可,因为我在脚本中打印日志,所以请添加权限。
#!/usr/bin/env python #-*- coding: utf-8 -*- #author: yanggd #date: 2018-04-20 #comment: zabbix接入微信报警脚本
import requests import sys import os import json import logging logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s', datefmt = '%a, %d %b %Y %H:%M:%S', filename = os.path.join('/usr/local/zabbix/share/zabbix/alertscripts','weixin.log'), filemode = 'a') corpid='wwbbaxxxxxx' appsecret='m2HUZXUxxxxxxxxxx' agentid=1000004
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret req=requests.get(token_url) accesstoken=req.json()['access_token'] #发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken touser=sys.argv[1] subject=sys.argv[2] #toparty='3|4|5|6'
message=sys.argv[3] params={ "touser": touser, # "toparty": toparty,
        "msgtype": "text", "agentid": agentid, "text": { "content": message }, "safe":0 } req=requests.post(msgsend_url, data=json.dumps(params)) logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)

 

#添加权限
chmod +x weixin.py
touch weixin.log
chown zabbix.zabbix weixin.log
 
企业号开发文档请官方文档企业微信API:
开始开发
发送应用消息
脚本说明:
1.corpid、appsecret、agentid就是咱们须要从企业号和应用中获取到的信息,其中.corpid、appsecret用于获取accesstoken,agentid用于往应用发送消息
2.因为zabbix会往脚本中传入3个参数,分别为sendto(收件人)、subject(报警主题)、message(报警信息)。这3个参数须要在zabbix中配置,咱们下面会讲到。
此脚本中咱们没有接受subject参数,而是直接使用sendto及message参数。
另经测试添加toparty部门变量后,发现报警信息会重复发送,所以在此注释掉。
具体的报警发送信息,咱们经过脚本打印在日志weixin.log中。
 
2、zabbix配置
1.报警媒介类型

 


这里写图片描述
zabbix3.4版本要添加这三个参数,用于发给weixin.py。
2.添加动做
事件源选择“触发器”,而后“建立动做”
(1)动做

 


这里写图片描述
注意:计算方式”与/或”,当维护状态非在维护 and 任意一个模板项有问题时,会触发此动做。
(2)操做

 


这里写图片描述
“默认信息”就是发送到weixin.py脚本的message
“操做”能够定义此动做发送的接收人或接受组
#方便拷贝 Problem started at {EVENT.TIME} on {EVENT.DATE} Problem name: {TRIGGER.NAME} Host: {HOST.NAME} Severity: {TRIGGER.SEVERITY} Problem description: {ITEM.NAME}:{ITEM.VALUE} {TRIGGER.URL}

 

 
(3)恢复操做

 


这里写图片描述
此操做就是故障恢复时发送恢复报警信息。
#方便拷贝
Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE} Problem name: {TRIGGER.NAME} Host: {HOST.NAME} Severity: {TRIGGER.SEVERITY} Problem description: {ITEM.NAME}:{ITEM.VALUE} {TRIGGER.URL}

 

(4)确认操做

 


这里写图片描述
此操做就是监控人员在zabbix网页中确认问题并关闭问题后发送的确认信息,这也是3.4版本和某些低版本不一样的地方。
#方便拷贝
{USER.FULLNAME} acknowledged problem at {ACK.DATE} {ACK.TIME} with the following message: {ACK.MESSAGE} 
 
3.给用户添加报警媒介

 


管理–用户,选择属于web_admin组中的一个用户,而后选择“报警媒介”-“添加”
这里写图片描述
注意:收件人为企业号-通信录中成员帐号,是成员的惟一标识。
3、测试
当上面的几步操做完成后,咱们先对脚本进行测试。
#最好使用zabbix用户测试,来排除权限问题
python weixin.py opt test test
#opt为消息接收帐号
 
执行完成后,企业号就会收到测试信息,而后再中止某一服务,经过zabbix报警查看微信是否能接收到信息。
weixin.py脚本经过zabbix报警使用的是zabbix用户,所以请确认脚本及日志是否具备权限。
微信报警信息以下: 第一条是报警信息 第二条是故障恢复信息