zabbix微信告警
1、注册企业微信https://work.weixin.qq.com/2、创建应用3、进入应用可见范围要是接收告警人员的所在组,不能是用户,只有组中的用户可以接收告警。4、登陆http://qydev.weixin.qq.com/debug5、Corpid获取位置6、Corpsecret获取位置7、编写告警脚本vim /usr/lib/zabbix/alertscripts/wx.py#!/usr
1、注册企业微信
https://work.weixin.qq.com/
2、创建应用

3、进入应用
可见范围要是接收告警人员的所在组,不能是用户,只有组中的用户可以接收告警。

4、登陆
http://qydev.weixin.qq.com/debug
5、Corpid获取位置


6、Corpsecret获取位置
7、编写告警脚本
vim /usr/lib/zabbix/alertscripts/wx.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib,urllib2,json
import sys
import logging
reload(sys)
sys.setdefaultencoding( "utf-8" )
class WeChat(object):
__token_id = ''
# init attribute
def __init__(self,url):
self.__url = url.rstrip('/')
self.__corpid = 'ww328639968eec3d1d'
self.__secret = 'X8oUsALBdPBH5ZSJez-A-q5pJeIv6Pkms-5yua8XFl4'
# Get TokenID
def authID(self):
params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
data = urllib.urlencode(params)
content = self.getToken(data)
try:
self.__token_id = content['access_token']
# print content['access_token']
except KeyError:
raise KeyError
# Establish a connection
def getToken(self,data,url_prefix='/'):
url = self.__url + url_prefix + 'gettoken?'
try:
response = urllib2.Request(url + data)
except KeyError:
raise KeyError
# logger.exception(sys.exc_info())
result = urllib2.urlopen(response)
content = json.loads(result.read())
return content
# Get sendmessage url
def postData(self,data,url_prefix='/'):
url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
request = urllib2.Request(url,data)
try:
result = urllib2.urlopen(request)
except urllib2.HTTPError as e:
if hasattr(e,'reason'):
print 'reason',e.reason
elif hasattr(e,'code'):
print 'code',e.code
return 0
else:
content = json.loads(result.read())
result.close()
return content
# send message
def sendMessage(self,touser,message):
self.authID()
data = json.dumps({
'touser':touser,
'toparty':"2",
'msgtype':"text",
'agentid':"1000002",
'text':{
'content':message
},
'safe':"0"
},ensure_ascii=False)
logging.info("======dump data end")
response = self.postData(data)
print response
if __name__ == '__main__':
a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
a.sendMessage(sys.argv[1],sys.argv[3])
此脚本需要更改的地方:
- self.__corpid = 'ww328639968eec3d1d'
- self.__secret = 'X8oUsALBdPBH5ZSJez-A-q5pJeIv6Pkms-5yua8XF
- 'toparty':"2", //部门ID
- 'agentid':"1000002", //应用ID
部门ID查看:

8、测试:
./weixin 1000002 aa aa
发送成功可以进行zabbix配置
9、Zabbix告警配置

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}



{TRIGGER.STATUS}: {TRIGGER.NAME}
平台名称: {TRIGGER.HOSTGROUP.NAME}
告警主机: {HOST.NAME}--{HOST.IP}
告警时间: {DATE} {TIME}
告警名称: {TRIGGER.NAME}
告警状态: {TRIGGER.STATUS}
告警类别: {TRIGGER.SEVERITY}
告警详情: {ITEM.NAME1} : {ITEM.VALUE1}
事件ID: {EVENT.ID}
收到告警-请及时处理谢谢

{TRIGGER.STATUS}: {TRIGGER.NAME}
平台名称: {TRIGGER.HOSTGROUP.NAME}
告警主机: {HOST.NAME}--{HOST.IP}
告警时间: {DATE} {TIME}
告警名称: {TRIGGER.NAME}
告警状态: {TRIGGER.STATUS}
告警级别: {TRIGGER.SEVERITY}
告警详情: {ITEM.NAME1} : {ITEM.VALUE1}
事件ID: {EVENT.ID}
问题已恢复-祝您工作愉快
完成
测试告警




更多推荐



所有评论(0)