1. 程式人生 > >zabbix新增企業微信傳送

zabbix新增企業微信傳送

簡介 微信作為日常使用最頻繁的工具,因此希望將微信接入zabbix報警。
微信企業號 1.申請微信企業號
申請後,請在“我的企業”頁面下記錄企業號的CorpID

 


這裡寫圖片描述
2.新增通訊錄

 


這裡寫圖片描述
部門新增完成後,根據實際情況新增子部門或相關成員,如下:
這裡寫圖片描述
3.建立應用

 


在“企業應用”頁面建立應用

 


這裡寫圖片描述 注意: 可見範圍一定要新增需要收到報警的人員或部門,否則zabbix報警資訊無法推送到相關人員。 建立完成如下:

 


這裡寫圖片描述 至此,微信企業號的配置完成。
zabbix server端配置 一.微信報警指令碼
預設將指令碼放到/usr/local/zabbix/share/zabbix/alertscripts即可,由於我在指令碼中列印日誌,因此請新增許可權。
#
!/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('/usr/local/zabbix/share/zabbix/alertscripts','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)

 

#新增許可權
chmod +x weixin.py
touch weixin.log
chown zabbix.zabbix weixin.log   企業號開發文件請官方文件企業微信API:
開始開發
傳送應用訊息 指令碼說明:
1.corpid、appsecret、agentid就是我們需要從企業號和應用中獲取到的資訊,其中.corpid、appsecret用於獲取accesstoken,agentid用於往應用傳送訊息
2.由於zabbix會往指令碼中傳入3個引數,分別為sendto(收件人)、subject(報警主題)、message(報警資訊)。這3個引數需要在zabbix中配置,我們下面會講到。 此指令碼中我們沒有接受subject引數,而是直接使用sendto及message引數。
另經測試新增toparty部門變數後,發現報警資訊會重複傳送,因此在此註釋掉。
具體的報警傳送資訊,我們通過指令碼列印在日誌weixin.log中。   二、zabbix配置
1.報警媒介型別

 


這裡寫圖片描述
zabbix3.4版本要新增這三個引數,用於發給weixin.py。
2.新增動作
事件源選擇“觸發器”,然後“建立動作”
(1)動作

 


這裡寫圖片描述 注意:計算方式”與/或”,當維護狀態非在維護 and 任意一個模板項有問題時,會觸發此動作。
(2)操作

 


這裡寫圖片描述
“預設資訊”就是傳送到weixin.py指令碼的message
“操作”可以定義此動作傳送的接收人或接受組
#方便拷貝
Problem started at {EVENT.TIME} on {EVENT.DATE}
Problem name: {TRIGGER.NAME}
Host: {HOST.NAME}
Severity: {TRIGGER.SEVERITY}
Problem description: {ITEM.NAME}:{ITEM.VALUE}
{TRIGGER.URL}

 

  (3)恢復操作

 


這裡寫圖片描述
此操作就是故障恢復時傳送恢復報警資訊。 #方便拷貝
Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
Problem name: {TRIGGER.NAME}
Host: {HOST.NAME}
Severity: {TRIGGER.SEVERITY}
Problem description: {ITEM.NAME}:{ITEM.VALUE}
{TRIGGER.URL}

 

(4)確認操作

 


這裡寫圖片描述
此操作就是監控人員在zabbix網頁中確認問題並關閉問題後傳送的確認資訊,這也是3.4版本和某些低版本不同的地方。 #方便拷貝
{USER.FULLNAME} acknowledged problem at {ACK.DATE} {ACK.TIME} with the following message:
{ACK.MESSAGE}
  3.給使用者新增報警媒介

 


管理–使用者,選擇屬於web_admin組中的一個使用者,然後選擇“報警媒介”-“新增”
這裡寫圖片描述
注意:收件人為企業號-通訊錄中成員賬號,是成員的唯一標識。 三、測試
當上面的幾步操作完成後,我們先對指令碼進行測試。 #最好使用zabbix使用者測試,來排除許可權問題
python weixin.py opt test test
#opt為訊息接收賬號   執行完成後,企業號就會收到測試資訊,然後再停止某一服務,通過zabbix報警檢視微信是否能接收到資訊。 weixin.py指令碼通過zabbix報警使用的是zabbix使用者,因此請確認指令碼及日誌是否具有許可權。 微信報警資訊如下:
第一條是報警資訊
第二條是故障恢復資訊 這裡寫圖片描述
---------------------
作者:man8er
來源:CSDN
原文:https://blog.csdn.net/yanggd1987/article/details/80093310
版權宣告:本文為博主原創文章,轉載請附上博文連結!