Zabbix如何通过代理发送微信告警

写在前面

Zabbix是一款优秀的开源监控产品,监控软件最重要的两个功能,一个是监控,另外一个是告警,Zabbix最新支持告警方式比较多,前面已经写过钉钉、企业、企业机器人等文章,这篇文章主要是应对另外一种情况,如何在服务器代理访问的情况下与企业对接。

正文

环境

Centos 7.6Python 2.7Zabbix 5.0.2

用服务器调用脚本与企业对接,此时由于没有访问外网的权限,所以无法访问

正常测试

加上代理访问,此时测试无异常

加入代理环境测试

进入zabbix界面,在告警媒介里测试,出现超时现象

出现超时

由于这里脚本并没有通过代理去访问,所以出现超时,此时在python里调用代理代码,测试正常

测试正常

正常接收

代码部分

#!/usr/bin/python #_*_coding:utf-8 _*_ import urllib,urllib2 import json import sys reload(sys) sys.setdefaultencoding(utf-8) proxy_info = { host : x.x.x.x,port : xxxx }##host后接代理IP,port后的xxx为端口 proxy_support = urllib2.ProxyHandler({"http" : "http://%(host)s:%(port)d" % proxy_info}) proxy_support = urllib2.ProxyHandler({"https" : "https://%(host)s:%(port)d" % proxy_info}) opener = urllib2.build_opener(proxy_support) urllib2.install_opener(opener) def gettoken(corpid,corpsecret): gettoken_url = ?corpid= + corpid + &corpsecret= + corpsecret printgettoken_url try: token_file = urllib2.urlopen(gettoken_url) except urllib2.HTTPError as e: print e.code print e.read().decode("utf8") sys.exit() token_data = token_file.read().decode(utf-8) token_json = json.loads(token_data) token_json.keys() token = token_json[access_token] return token def senddata(access_token,user,subject,content): send_url = ?access_token= + access_token send_values = { "touser":"$1", #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。 "toparty":"3",#企业号中的部门id。 "msgtype":"text", #消息类型。 "agentid":"",#企业号中的应用id。 "text":{ "content":subject + \n + content }, "safe":"0" } #send_data = json.dumps(send_values, ensure_ascii=False) send_data = json.dumps(send_values, ensure_ascii=False).encode(utf-8) send_request = urllib2.Request(send_url, send_data) response = json.loads(urllib2.urlopen(send_request).read()) print str(response) if __name__ == __main__: user = str(sys.argv[1]) subject = str(sys.argv[2]) content = str(sys.argv[3]) corpid =自行添加 corpsecret = 自行添加 accesstoken = gettoken(corpid,corpsecret) senddata(accesstoken,user,subject,content)

写在最后

任何想要的结果出现问题,需要去分析为什么会出现该结果,得出原因后根据根因去定位,得出解决方案。

该篇文章是基于之前的一篇与企业对接的功能增加版本,如果有不明白之处,可以先看看之前那篇文章,或者留言