zabbix3.X 4.X 接入微信報警(6個外部參數)適合用於給多、單個成員發送告警信息

參照: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

 

到此配置完成。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章