寫在前面
Zabbix是一款優(yōu)秀的開源監(jiān)控產(chǎn)品,監(jiān)控軟件最重要的兩個(gè)功能,一個(gè)是監(jiān)控,另外一個(gè)是告警,Zabbix最新支持告警方式比較多,前面已經(jīng)寫過釘釘、企業(yè)微信、企業(yè)微信機(jī)器人等文章,這篇文章主要是應(yīng)對(duì)另外一種情況,如何在服務(wù)器代理訪問的情況下與企業(yè)微信對(duì)接。
正文
環(huán)境
- centos 7.6
- Python 2.7
- Zabbix 5.0.2
用服務(wù)器調(diào)用腳本與企業(yè)微信對(duì)接,此時(shí)由于沒有訪問外網(wǎng)的權(quán)限,所以無法訪問
正常測(cè)試
加上代理訪問,此時(shí)測(cè)試無異常
加入代理環(huán)境測(cè)試
進(jìn)入zabbix界面,在告警媒介里測(cè)試,出現(xiàn)超時(shí)現(xiàn)象
出現(xiàn)超時(shí)
由于這里腳本并沒有通過代理去訪問,所以出現(xiàn)超時(shí),此時(shí)在python里調(diào)用代理代碼,測(cè)試正常
測(cè)試正常
正常接收
代碼部分
#!/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 = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + 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 token
def senddata(access_token,user,subject,content):
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
send_values = {
"touser":"$1", #企業(yè)號(hào)中的用戶帳號(hào),在zabbix用戶Media中配置,如果配置不正常,將按部門發(fā)送。
"toparty":"3", #企業(yè)號(hào)中的部門id。
"msgtype":"text", #消息類型。
"agentid":"1000003", #企業(yè)號(hào)中的應(yīng)用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)
寫在最后
任何想要的結(jié)果出現(xiàn)問題,需要去分析為什么會(huì)出現(xiàn)該結(jié)果,得出原因后根據(jù)根因去定位,得出解決方案。
該篇文章是基于之前的一篇與企業(yè)微信對(duì)接的功能增加版本,如果有不明白之處,可以先看看之前那篇文章,或者留言