设置Zabbix微信告警机器人
前言:刚换zabbix server服务器,刚好记录一下这个——微信报警
注意:多图预警!!!
一、注册一个企业微信账号并设置
搜索企业微信官网https://work.weixin.qq.com/,直接注册就行,这里我已经注册好了,登录企业微信管理后台https://work.weixin.qq.com/wework_admin/loginpage_wx见下图:
1.1记录企业ID
创建应用
记录部门ID
1.2打开记录记录AgentId和Secret
上面这个页面,拉到最下面开发者接口,网页授权及JS-SDK—设置可信域名,根据你的提示验证域名(建议使用这种云提供商自带的DNS,没有是话只能用海外未备案的了) 配置企业可信IP(把服务器IP填进去)1.3测试企业微信接口调试工具
https://developer.work.weixin.qq.com/resource/devtool网页地址可能会变,变了就在企业微信—开发者中心找,这里获取的token记录一下
二、创建Python监控脚本并测试企业微信机器人
vim /usr/lib/zabbix/alertscripts/wechat.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
class WeChat(object):
__token_id = ''
# init attribute
def __init__(self,url):
self.__url = url.rstrip('/')
self.__corpid = 'wwa1da242f211cdf47'
self.__secret = 'rIrN51FEjgW6T2bdmSaEoOIB5UbaBTgddQkuC8cca1w'
# 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
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)
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])
有如下4个地方需要修改,都是之前要求记录的地方,找到他们修改成之前获取的信息:
self.__corpid = 'wwa1da242f211cdf47' #公司的corpid
self.__secret = 'rIrN51FEjgW6T2bdmSaEoOIB5UbaBTgddQkuC8cca1w' #应用的secret
'toparty':1, #部门id
'agentid':"1000002", #应用id
修改权限:
chown zabbix.zabbix /usr/lib/zabbix/alertscripts/wechat.py
chmod 777 /usr/lib/zabbix/alertscripts/wechat.py
测试脚本:
在企业微信后台创建一个了测试账号
root@HW-XJD:/usr/lib/zabbix/alertscripts# ./wechat.py ddmm test test #ddmm是我创建的测试账号
{u'msgid': u'3yzdAQ61LCLTa8NCVqmn2anCu0FeX9rTisS0Z-YarJAJW8eHHqg_OJZHytsEq4bX-Xg7qtF2LfdPrpBxl1RO2g', u'errcode': 0, u'errmsg': u'ok'}
#这结果显示测试正常#
而且还可以关联个人微信:
3.3告警—动作—创建触发器动作
以下是我的告警信息模板(可根据需要自己修改):
告警信息:
----------
故障级别:{TRIGGER.SEVERITY}
时间:{EVENT.DATE} {EVENT.TIME}
监控项:{TRIGGER.NAME}
当前状态:{TRIGGER.STATUS}
问题详情: {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
主机信息:
----------
名称:{HOST.NAME}
地址:{HOST.IP}
DNS:{HOST.DNS}
连接:{HOST.CONN}
请尽快处理。此消息为自动发送,请不要回复!
下了一台agent主机,查看效果:

















评论
发表评论