經過腳本發送zabbix微信報警

實現zabbix經過微信報警的方式也是經過腳原本實現,與郵件報警不一樣的是,腳本調用的微信的相關接口的獲取相對複雜一點 php

一、申請一個微信公衆號(企業號) python

申請方法很少說,若是已申請請忽略 web

二、在微信企業號上新建應用 json

上傳應用logo,填寫應用名稱,應用介紹等 api

應用建立完以後查看並啓用應用,同時會生成應用的AgentId以及Secret,這個在後面步驟會有用 服務器

三、接口調用測試 微信

點擊:API文檔——>開發者工具——>接口調試工具,找不到就直接點這個地址 app

http://work.weixin.qq.com/api/devtools/devtool.php 工具

corpid爲建立的企業號生成的corpid post

Corpsecret就是在第2步中建立的應用所生成的Secret,填入後點擊檢查問題,生成請求地址和返回結果,確認無誤後進行下一步

四、關於腳本

腳本的存放目錄爲/usr/lib/zabbix/alertscripts,腳本內容不作過多說明,須要瞭解含義請自行百度,腳本內容以下

[root@zabbix alertscripts]# cat weixin.py

#!/usr/bin/env python

#-*- coding: utf-8 -*-

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='微信企業號corpid'

appsecret='應用的Secret'

agentid=應用的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[2] + "\n\n" +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)

腳本中須要填寫微信企業號corpid,應用的Secret以及應用的id,腳本中還定義了日誌文件爲/tmp/weixin.log

腳本編寫完成以後須要爲腳本添加執行權限

[root@zabbix alertscripts]# chmod +x weixin.py

腳本後面內容中的一些參數touser,toparty,msgtype,agentid,content,safe是微信企業號中定義的參數名稱,說明文檔見騰訊企業號開發者文檔https://work.weixin.qq.com/api/doc

目前微信企業號中的部門成員帳號也就是咱們使用的touser參數是部門成員的帳號,這個帳號在早起階段是成員的微信號碼,可是目前咱們須要使用的帳號微信官方自動生成爲成員名字的拼音縮寫,能夠在微信企業號後臺通信錄——>部門——>成員詳情找到

另外須要說明的是,微信企業號應用的訪問頻率是有限制的,這一點一樣也能夠在開發者文檔中找到

五、web界面新增報警媒介類型

名稱自定義便可,類型選擇腳本,腳本名稱爲所寫的腳本的名稱weixin.py,腳本的三個參數都是zabbix內置變量,分別爲:報警收件人:{ALERT.SENDTO},報警標題:{ALERT.SUBJECT},報警內容:{ALERT.MESSAGE},添加完報警媒介類型後勾選啓用

六、配置用戶報警媒介信息

配置須要收到微信報警的用戶的信息,添加報警媒介,選擇上面建立的微信報警,收件人填寫上面所說的部門成員的帳號,因爲是經過微信公衆號發送的微信提醒,若是須要爲多個用戶例如微信企業號中全部用戶發送報警,這裏收件人的信息就填寫爲@all

七、測試

命令行測試腳本可否成功執行

[root@zabbix alertscripts]# ./weixin.py har452330261 "測試" 'test'

測試參數爲三個,分別爲部門成員帳號,報警標題,報警內容

測試的時候若是出現錯誤提示缺乏requests,解決方法爲使用pip進行安裝:pip install smtplib

測試後會在微信企業號中收到咱們建立的應用所發出的消息

同時在zabbix服務器的後臺也生成了微信報警的日誌文件/tmp/weixin.log,若是測試不成功能夠經過日誌來進行查錯

命令行測試完成後,若是想要經過zabbix進行觸發報警,還須要作的就是將上面生成的日誌文件的所屬修改成zabbix用戶且具備寫權限

[root@zabbix alertscripts]# ll /tmp/weixin.log

-rwxr-xr-x 1 zabbix zabbix 35329 6月 13 07:47 /tmp/weixin.log

到這裏微信報警就算大功告成了,接下來就能夠愉快的經過zabbix進行觸發微信報警了,報警成功觸發後能夠經過zabbix面板的報表——>動做日誌查看

收到的報警提示以下

附加內容:

一、微信報警基於微信企業號,一般狀況下咱們收到微信企業號的消息須要下載微信企業號的客戶端,如何不下載又能收到消息呢(也就是直接在本身的微信收到消息呢)?

解決辦法爲:進入微信企業號後臺——>鏈接微信——>微工做臺——>邀請關注,後臺會給所擁有的微信企業號生成一個二維碼,拿出手機,微信掃碼關注,之後報警的消息就能直接在微信收到了

二、新添加的用戶收到微信報警的步驟:

微信企業號通信錄相應部門中添加成員

微信企業號微工做臺邀請成員關注

zabbix服務端web界面添加用戶,設置用戶的微信報警媒介(收件人所在部門的相應成員帳號)

三、微信企業號具備不少功能以及開發者工具,有興趣或者相關開發人員能夠細細研究

 

博主原創文章,轉載請務必註明出處

相關文章
相關標籤/搜索