/usr/lib/zabbix/alertscripts/weixin.py test test hellohellohello
{u'errcode': 60020, u'errmsg': u'not allow to access from your ip, hint: [16688246602357314******], from ip: 219.*.*.*, more info at https://open.work.weixin.qq.com/devtool/query?e=60020'}
IP不合法,搞半天,发现是不支持自己开发了,要第三方应用,自己无法搞了。 操蛋的企业微信。
mp;spm=1001.2101.3001.7020","extra":"{\"searchword\":\"zabbix\"}"}" data-tit="zabbix" data-pretit="zabbix" style="box-sizing: border-box; outline: none; margin: 0px 3px 0px 0px; padding: 0px 14px 0px 3px; font-weight: normal; text-decoration-line: none; cursor: pointer; background: url("../img/iconHighlight.svg") right top / 12px 14px no-repeat transparent; color: rgb(252, 85, 49); overflow-wrap: break-word; border-radius: 3px; box-shadow: none;">zabbix实现企业微信报警
脚本内容为:
#!/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 = 'ww1d1845f4b25a12fb'
self.__secret = 'ItmpP6TjPNvx6aSlvRCYrkgK5BPWiqTrMf3xhKjUnLo'
# 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':3,
'msgtype':"text",
'agentid':"1000003",
'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])
————————————————
7、修改权限
[root@zabbix-server ~]# chmod 777 /usr/lib/zabbix/alertscripts/wechat.py
[root@zabbix-server ~]# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/wechat.py
8、在zabbix-server端进行脚本测试
[root@zabbix-server alertscripts]# /usr/lib/zabbix/alertscripts/wechat.py ZhangYu test hellohellohello
root@zabbix-server alertscripts]# /usr/lib/zabbix/alertscripts/wechat.py ZhangYu www helphelphelp
注意:ZhangYu是在企业微信中的用户名。
机上收到信息说明脚本正常使用。
8、在zabbix-server的web界面中创建报警媒介
9、为用户添加告警媒介(可以新建用户,也可以直接使用管理员账户admin),让这个用户关联告警媒介,并添加收件人
注意:类型(创建的告警媒介)、收件人(企业微信中的那个用户)
10、创建动作,实现企业微信告警(当有触发器被触发时,发送告警给特定用户)
定义动作:使用触发器,触发器自己定义,我这里用的是之前为了监控nginx运行状态创建的触发器。
定义操作:当动作被触发后,将会进行设置好的操作
发送消息的内容:
默认接收人:故障{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}
11、验证
当触发器被触发时,企业微信收到了告警信息
本文链接:https://www.kinber.cn/post/3037.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝: