zabbix 微信報警
微信報警
首先申請一個企業號:https://qy.weixin.qq.com/
1、通訊錄新增企業成員:
- 建立子部門:
- 建立新應用:
- 給部門設定管理員:
我們要準備這些東西:
一個微信企業號
企業號已經被部門成員關注
企業號裡有一個可以發訊息的應用
一個授權管理員,可以使用該應用給成員發訊息
我們要取到這些資訊,這五個資訊在微信報警指令碼中全部要用到:
成員賬號
組織部門ID
應用ID(agentid)和Secret
企業標識(CropID)
這個位置最下面
編寫微信報警Python指令碼
預設yum安裝的zabbix指令碼目錄是/usr/lib/zabbix/alertscripts
vim weixin.py #!/usr/bin/env python #-*- coding: utf-8 -*- #author: xx #date: 2018 #comment: zabbix接入微信報警指令碼 import requests import sys import os import json import logging 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('/usr/lib/zabbix/alertscripts','weixin.log'), filemode = 'a') corpid='ww39622e6185e63612' #CorpID是企業號的標識 appsecret='bmrb_sHGS2rAPi-YdWq3M1AUb73EBSeo00po4BsFWVo' #是管理組憑證金鑰 agentid=1000003 #企業號中的應用id #獲取accesstoken token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret req=requests.get(token_url) accesstoken=req.json()['access_token'] #傳送訊息 msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken touser=sys.argv[1] subject=sys.argv[2] #toparty='3|4|5|6' message=sys.argv[3] params={ "touser": "LiJunMin",#企業號中的使用者帳號,在zabbix使用者Media中配置,如果配置不正常,將按部門傳送 "toparty": "2",#企業號中的部門id "msgtype": "text",#訊息型別 "agentid": "1000003", #企業號中的應用id,同上agentid號 "text": { "content": message }, "safe":0 } req=requests.post(msgsend_url, data=json.dumps(params)) logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
#新增許可權
chmod +x weixin.py
touch weixin.log
chown zabbix.zabbix weixin.log
然後配置zabbix web端
建立一個微信報警使用者(也可直接用管理使用者admin,“可選”)
示警媒介配置
新增動作
故障與恢復資訊模板
故障{TRIGGER.STATUS},伺服器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警專案:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢復{TRIGGER.STATUS}, 伺服器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警專案:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
動作操作配置
最後測試
#最好用zabbix使用者來測試,來排除許可權問題
python weixin.py [email protected] test test
如果你企業微信收到test資訊說明指令碼通訊OK。
如果執行的時候有如下報錯就重新安裝缺少的模組
[[email protected] alertscripts]# python weixin.py [email protected] weixin weixin
Traceback (most recent call last):
File "weixin.py", line 7, in <module>
import requests
ImportError: No module named requests
提示沒有requests
重新安裝requests模組即可
[[email protected] alertscripts]# yum install python-requests -y
執行完成後,然後再停止某一服務,通過zabbix報警檢視微信是否能接收到資訊。
例如停掉MySQL服務:
一分鐘後web端檢測中的儀表盤和微信就會同時報警
微信報警到此結束!