写在前面Zabbix是一款优秀的开源监控产品,监控软件最重要的两个功能,一个是监控,另外一个是告警,Zabbix最新支持告警方式比较多,前面已经写过钉钉、企业微信、企业微信机器人等文章,这篇文章主要是应对另外一种情况,如何在服务器代理访问的情况下与企业微信对接 。
正文环境
- centos 7.6
- Python 2.7
- Zabbix 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" : "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 = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecretprintgettoken_urltry:token_file = urllib2.urlopen(gettoken_url)except urllib2.HTTPError as e:print e.codeprint e.read().decode("utf8")sys.exit()token_data = https://www.isolves.com/it/rj/yy/2021-03-10/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 = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_tokensend_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)
写在最后任何想要的结果出现问题,需要去分析为什么会出现该结果,得出原因后根据根因去定位,得出解决方案 。
该篇文章是基于之前的一篇与企业微信对接的功能增加版本,如果有不明白之处,可以先看看之前那篇文章,或者留言
【Zabbix如何通过代理发送微信告警】
推荐阅读
- Python开发必备:如何建立一个完美的项目工程环境
- 如何调用竞争对手的网站流量?查看别人哪些关键字排名最高?
- 如何探测UDP端口是否开放
- Python线上环境如何优雅地使用日志?
- 响应速度与智能化如何平衡,携程酒店搜索实践
- 如何远程关闭局域网中的电脑?
- 如何运用Spring框架的@Async实现异步任务
- 山是如何形成的? 地球上的高山是怎样形成的
- 人物设定|如何扭转领导的区别对待?这3点是疏通关键,做好了职场顺风顺水
- 职业规划|建筑工程业从业者,如何预防中年危机?需要做职业规划吗?