參照:https://blog.csdn.net/yanggd1987/article/details/80093310
微信作爲日常使用最頻繁的工具,因此希望將微信接入zabbix報警。
本文分享微信告警腳本,其他請參照上文。
zabbix3.X 4.X 接入微信報警(6個外部參數)適合用於給部門中單個成員發送告警信息。
zabbix server端配置
一.微信報警腳本
登錄zabbix主機,查看配置zabbix_server.conf ,找到AlertScriptsPath,查看路徑位置,如被註釋,將註釋打開,把send.py 文件保存到該目錄下。
# cat /etc/zabbix/zabbix_server.conf |grep AlertScriptsPath
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
如有修改配置,需重啓zabbix-server服務。
以下是腳本內容
#!/usr/bin/python
#_*_coding:utf-8 _*_
import urllib,urllib2
import json
import sys
import os
import simplejson
import logging
import argparse
reload(sys)
sys.setdefaultencoding('utf-8')
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/var/log/zabbix/','weixin.log'),
filemode = 'a')
parser = argparse.ArgumentParser()
parser.add_argument('--agentid', type=str, default=None)
parser.add_argument('--corpid', type=str, default=None)
parser.add_argument('--corpsecret', type=str, default=None)
parser.add_argument('--touser', type=str, default=None)
parser.add_argument('--subject', type=str, default=None)
parser.add_argument('--content', type=str, default=None)
parser_parameters = parser.parse_args()
agentid = parser_parameters.agentid
corpid = parser_parameters.corpid
corpsecret = parser_parameters.corpsecret
touser = parser_parameters.touser
subject = parser_parameters.subject
content = parser_parameters.content
#touser = 'huangshumao'
print touser
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,touser,subject,content):
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
send_values = {
"touser": touser,
"toparty":"2",
"msgtype":"text",
"agentid":agentid,
"text":{
"content":subject + '\n' + content
},
"safe":"0"
}
# send_data = json.dumps(send_values, ensure_ascii=False)
send_data = simplejson.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])
# agentid = 1000002
# corpid = 'ww48f2e8ce0xxxxxx'
# corpsecret = 'hy8doOgY2Whb_BXxpaeB0qFqpoz3PNvxuZb_xxxxx'
accesstoken = gettoken(corpid,corpsecret)
senddata(accesstoken,touser,subject,content)
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + content)
#添加權限
chmod +x weixin.py
touch /var/log/zabbix/weixin.log
chown zabbix.zabbix /var/log/zabbix/weixin.log
說明:該腳本需要傳6個參數,測試方法:
#當前目錄/usr/lib/zabbix/alertscripts
./weixin.py --agentid="1000002" --corpid="ww6539930f20f96beb" --corpsecret="PIXJW4JZmRxLzTEb84ackkwNinrMztUyiZ-tLs8JRO0" --touser="" --subject test --content tes66666
手機企業微信可以收到:
在zabbix服務器web界面設置,添加告警類型
6個參數:
--agentid=1000002
--corpid=ww6539930f20f96beb
--corpsecret=PIXJW4JZmRxLzTEb84ackkwNinrMztUyiZ-tLs8JRO0
--touser={ALERT.SENDTO}
--subject={ALERT.SUBJECT}
--content={ALERT.MESSAGE}
添加動作:
標題:
{TRIGGER.STATUS}:{TRIGGER.SEVERITY}: {TRIGGER.NAME}:{HOST.IP}
內容:
告警主機:{HOST.NAME}
主機IP: {HOST.IP}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:
告警信息:{TRIGGER.NAME}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
選發到admin,sendonlyto --all--
最後在用戶admin-media
到此配置完成。