1. 程式人生 > >0213微信ZABBIX報警

0213微信ZABBIX報警

企業微信 頁面 part asc led 完成後 serve text 觸發

簡介

微信作為日常使用最頻繁的工具,因此希望將微信接入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}

Current problem status is {EVENT.STATUS}

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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

0213微信ZABBIX報警