zabbix 微信报警

一、注册企业微信号

          略

需要得到的信息

成员账号      在企业群组里的个人账号
组织部门ID    2

应用ID=
corpsecret=


corpid = 在我的企业 ,企业信息中得到


二、配置zabbix 

[root@2323~]# grep alertscripts /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts //我们设置zabbix默认脚本路径,这样在web端就可以获取到脚本

#安装simplejson
wget https://pypi.python.org/packages/f0/07/26b519e6ebb03c2a74989f7571e6ae6b82e9d7d81b8de6fcdbfc643c7b58/simplejson-3.8.2.tar.gz
tar zxvf simplejson-3.8.2.tar.gz && cd simplejson-3.8.2
python setup.py build
python setup.py install

cd
/usr/lib/zabbix/alertscripts
 vim  wechat.py    
 1 [root@abcdocker ~]# cat /usr/lib/zabbix/alertscripts/wechat.py 
 2 #!/usr/bin/python
 3 #_*_coding:utf-8 _*_
 4 
 5 
 6 import urllib,urllib2
 7 import json
 8 import sys
 9 import simplejson
10 
11 reload(sys)
12 sys.setdefaultencoding('utf-8')
13 
14 
15 def gettoken(corpid,corpsecret):
16     gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
17     print  gettoken_url
18     try:
19         token_file = urllib2.urlopen(gettoken_url)
20     except urllib2.HTTPError as e:
21         print e.code
22         print e.read().decode("utf8")
23         sys.exit()
24     token_data = token_file.read().decode('utf-8')
25     token_json = json.loads(token_data)
26     token_json.keys()
27     token = token_json['access_token']
28     return token
29 
30 
31 
32 def senddata(access_token,user,subject,content):
33 
34     send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
35     send_values = {
36         "touser":“user”,    #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
37         "toparty":"2",    #企业号中的部门id。
38         "msgtype":"text", #消息类型。
39         "agentid":"1000002",    #企业号中的应用id。
40         "text":{
41             "content":subject + '\n' + content
42            },
43         "safe":"0"
44         }
45 #    send_data = json.dumps(send_values, ensure_ascii=False)
46     send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
47     send_request = urllib2.Request(send_url, send_data)
48     response = json.loads(urllib2.urlopen(send_request).read())
49     print str(response)
50 
51 
52 if __name__ == '__main__':
53     user = str(sys.argv[1])     #zabbix传过来的第一个参数
54     subject = str(sys.argv[2])  #zabbix传过来的第二个参数
55     content = str(sys.argv[3])  #zabbix传过来的第三个参数
56 
57     corpid =  '11111111111111'   #CorpID是企业号的标识
58     corpsecret = '222222222222222222'  #corpsecretSecret是管理组凭证密钥
59     accesstoken = gettoken(corpid,corpsecret)
60     senddata(accesstoken,user,subject,content)

 # chmod +x wechat.py && chown zabbix:zabbix wechat.py

执行py脚本,进行测试

[root@abcdocker alertscripts]# ./wechat.py www www 123
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wx6dadb9cc293b793e&corpsecret=JjesoeixbFt6dDur7_eXtamVBx2SjPBuXMQ0Jte3YLkz8l-VBnr0JvU12P0kvpGJ
{u'invaliduser': u'all user invalid', u'errcode': 0, u'errmsg': u'ok'}

微信收到信息 ,,成功~

三、配置zabbix  

建立一个  报警媒介 关联到 wechat.py 脚本 (脚本中默认发给一个用户信息,可以配置多个脚本发给多个)


 

 wechat.py   必须存放在/usr/lib/zabbix/alertscripts/  下才能调用

 

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

 

配置 触发报警机制以后的   动作  (邮件微信可以使用这一个动作,发送给 Admin)

 触发以上动作后,进行以下操作,将报警信息 发送给 指定 的 zabbix 系统账号 admin:

 

 

故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

 

 

 编辑 admin 用户的 报警媒介。 

 

 类型:选择刚才建立的脚本名称,关联调动,将报警信息 发给 微信平台。

 

应用ID

 

 测试报警

 

 

 

 

 

 

 
posted @ 2017-07-19 10:20  jjp816  阅读(547)  评论(2编辑  收藏  举报