龙空技术网

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

IT小白Kasar 3875

前言:

而今小伙伴们对“微信代理端口设置”大体比较着重,朋友们都想要剖析一些“微信代理端口设置”的相关内容。那么小编也在网络上收集了一些关于“微信代理端口设置””的相关知识,希望朋友们能喜欢,同学们一起来了解一下吧!

写在前面

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

正文

环境

Centos 7.6Python 2.7Zabbix 5.0.2

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

正常测试

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

加入代理环境测试

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

出现超时

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

测试正常

正常接收

代码部分

#!/usr/bin/python#_*_coding:utf-8 _*_import urllib,urllib2import jsonimport sysreload(sys)sys.setdefaultencoding('utf-8')proxy_info = { 'host' : 'x.x.x.x','port' : xxxx }  ##host后接代理IP,port后的xxx为端口proxy_support = urllib2.ProxyHandler({"http" : "; % proxy_info})proxy_support = urllib2.ProxyHandler({"https" : "; % proxy_info})opener = urllib2.build_opener(proxy_support)urllib2.install_opener(opener)def gettoken(corpid,corpsecret):    gettoken_url = '; + corpid + '&corpsecret=' + corpsecret    print  gettoken_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 tokendef senddata(access_token,user,subject,content):    send_url = '; + access_token    send_values = {        "touser":"$1",   #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。        "toparty":"3",        #企业号中的部门id。        "msgtype":"text",     #消息类型。        "agentid":"1000003",  #企业号中的应用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)

写在最后

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

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

标签: #微信代理端口设置