實現zabbix通過微信報警的方式也是通過腳本來實現,與郵件報警不同的是,腳本調用的微信的相關接口的獲取相對複雜一點
1、申請一個微信公衆號(企業號)
申請方法不多說,如果已申請請忽略
2、在微信企業號上新建應用
應用創建完之後查看並啓用應用,同時會生成應用的AgentId以及Secret,這個在後面步驟會有用
3、接口調用測試
點擊:API文檔——>開發者工具——>接口調試工具,找不到就直接點這個地址
http://work.weixin.qq.com/api/devtools/devtool.php
4、關於腳本
腳本的存放目錄爲/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='wwdeXXXXXXX' ##這裏是你申請企業微信生成的值
appsecret='XXXXXXXXX' ##這裏是你申請企業微信生成的值
agentid=XXXXXXX ##這裏是你申請企業微信生成的值
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)
[root@Zabbix alertscripts]#
腳本中需要填寫微信企業號corpid,應用的Secret以及應用的id,腳本中還定義了日誌文件爲/tmp/weixin.log(日誌文在要添權用戶權限)
腳本編寫完成之後需要爲腳本添加執行權限
[root@zabbix alertscripts]# chmod +x weixin.py
可以在微信企業號後臺通訊錄——>部門——>成員詳情找到
在ZABBIX中添微信報警類型:
名稱自定義即可,類型選擇腳本,腳本名稱爲所寫的腳本的名稱weixin.py,腳本的三個參數都是zabbix內置變量,分別爲:報警收件人:{ALERT.SENDTO},報警標題:{ALERT.SUBJECT},報警內容:{ALERT.MESSAGE},添加完報警媒介類型後勾選啓用
6、配置用戶報警媒介信息
配置需要收到微信報警的用戶的信息,添加報警媒介,選擇上面創建的微信報警,收件人填寫上面所說的部門成員的賬號,由於是通過微信公衆號發送的微信提醒,如果需要爲多個用戶例如微信企業號中所有用戶發送報警,這裏收件人的信息就填寫爲
命令行測試腳本能否成功執行
[root@zabbix alertscripts]# ./weixin.py Zhaslkfxxx "測試" 'test'
報錯
Traceback (most recent call last):
File "weixin.py", line 5, in <module>
import requests
ImportError: No module named requests
測試參數爲三個,分別爲部門成員賬號,報警標題,報警內容
測試的時候如果出現錯誤提示缺少requests,解決方法爲使用pip進行安裝:pip install smtplib
[root@Zabbix alertscripts]# yum -y install python-pip
解決辦法:
yum安裝
[root@Zabbix alertscripts]# yum install python-pip
[root@Zabbix alertscripts]# pip -v
[root@Zabbix alertscripts]# pip install requests
===========================================================
源碼安裝
1.下載:
在它的官網可以下載到安裝包:
https://pypi.python.org/pypi/setuptools
下載路徑:
#wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz#md5=f07e4b0f4c1c9368fcd980d888b29a65
- 安裝
tar xvf setuptools-12.0.3.tar.gz
cd setuptools-12.0.3
python setup.py install
cd pip-18.0
python setup.py install
測試後會在微信企業號中收到我們創建的應用所發出的消息
添加用戶組