天天看點

實作Zabbix+企業微信告警

1. 注冊一個企業微信,擷取企業ID

實作Zabbix+企業微信告警

2. 建立一個機器人

實作Zabbix+企業微信告警

建立時需要選擇該小程式的可見範圍——哪些使用者可以看得到這個小程式,且能夠收到該小程式發送的資訊。

建立完畢後,記錄如下的兩個值。

到此為止,已經擷取到三個值(企業id、agentid以及秘鑰)。後續伺服器上的腳本就根據這三個值向小程式發送告警資訊。

實作Zabbix+企業微信告警

 3. 編寫推送資訊的腳本

在Zabbix伺服器上的腳本路徑下建立腳本檔案,預設路徑一般是/etc/zabbix/alertscripts/,請提前檢視zabbix配置檔案确認該路徑(AlertScriptsPath=/etc/zabbix/alertscripts)。

腳本名稱:weixin.py

存放路徑:/etc/zabbix/alertscripts/

修改政策:将之前得到的三個值,分别填入corpid、appsecret、agentid;

腳本修改完畢後,一定要為其添加可執行權限!

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: yanggd
#date: 2018-04-20
#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('/tmp','weixin.log'),
filemode = 'a')
corpid='wwbbaxxxxxx'
appsecret='m2HUZXUxxxxxxxxxx'
agentid=1000004

#擷取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": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:'
+ message)      

到此為止,可以測試該腳本是否能夠發送資訊;

[root@test2 alertscripts]# ./weixin.py Cheng-Loto 'Title' 'test content'      
實作Zabbix+企業微信告警

 可能會遇到如下報錯,通過圖上方式可解決:

實作Zabbix+企業微信告警

4. 配置Zabbix

添加報警媒介:管理>報警媒介類型>建立媒體類型

實作Zabbix+企業微信告警

 添加接收對象:小程式可見對象的id,登入到企業微信通訊錄檢視。

實作Zabbix+企業微信告警

5. 配置完畢,驗證

實作Zabbix+企業微信告警

6. 其他

① zabbix中是在告警媒介中手工添加企業微信組中的使用者ID,如果需要應用到普羅米修斯中,普羅米修斯可以通過方法自動擷取,需要借助到企業微信的API:https://work.weixin.qq.com/api/doc/90000/90135/90200

通過如下py代碼可以擷取到該小程式中的所有成員id:

import requests

req = requests.get('https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=xxoxxxxxtAw&department_id=1&fetch_child=1', timeout=30);
req_jason = req.json();

list2 = req_jason.get('userlist');

for i in list2:
    print(i.get('userid'))      

②若是消息隻能在企業微信裡接受,個人微信收不到資訊。

在企業微信用戶端,個人首頁點選設定 -> 新消息通知 -> “僅在企業微信中接收消息”,點進去把選項全部關掉。

③ 其他配置都正确,仍然收不到資訊,檢查zabbix中有沒有啟用動作。具體去排查zabbix配置的正确性。

實作Zabbix+企業微信告警
上一篇: 閃回
下一篇: Oracle優化