1. 程式人生 > >zabbix 微信報警

zabbix 微信報警

微信報警

 

首先申請一個企業號:https://qy.weixin.qq.com/

1、通訊錄新增企業成員:

  1. 建立子部門:

  1. 建立新應用:

  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端檢測中的儀表盤和微信就會同時報警

 

微信報警到此結束!