实现zabbix通过微信报警的方式也是通过脚本来实现,与邮件报警不同的是,脚本调用的微信的相关接口的获取相对复杂一点

1、申请一个微信公众号(企业号)

申请方法不多说,如果已申请请忽略

2、在微信企业号上新建应用

Zabbix 微信报警_第1张图片

Zabbix 微信报警_第2张图片

应用创建完之后查看并启用应用,同时会生成应用的AgentId以及Secret,这个在后面步骤会有用

3、接口调用测试

点击:API文档——>开发者工具——>接口调试工具,找不到就直接点这个地址

http://work.weixin.qq.com/api/devtools/devtool.php
Zabbix 微信报警_第3张图片
4、关于脚本

脚本的存放目录为/usr/lib/zabbix/alertscripts,脚本内容不做过多说明,需要了解含义请自行百度,脚本内容如下
Zabbix 微信报警_第4张图片

[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 微信报警_第5张图片
可以在微信企业号后台通讯录——>部门——>成员详情找到
Zabbix 微信报警_第6张图片
在ZABBIX中添微信报警类型:
名称自定义即可,类型选择脚本,脚本名称为所写的脚本的名称weixin.py,脚本的三个参数都是zabbix内置变量,分别为:报警收件人:{ALERT.SENDTO},报警标题:{ALERT.SUBJECT},报警内容:{ALERT.MESSAGE},添加完报警媒介类型后勾选启用

6、配置用户报警媒介信息

配置需要收到微信报警的用户的信息,添加报警媒介,选择上面创建的微信报警,收件人填写上面所说的部门成员的账号,由于是通过微信公众号发送的微信提醒,如果需要为多个用户例如微信企业号中所有用户发送报警,这里收件人的信息就填写为
Zabbix 微信报警_第7张图片

Zabbix 微信报警_第8张图片
Zabbix 微信报警_第9张图片


Zabbix 微信报警_第10张图片

Zabbix 微信报警_第11张图片
Zabbix 微信报警_第12张图片
命令行测试脚本能否成功执行

[root@zabbix alertscripts]# ./weixin.py Zhaslkfxxx "测试" 'test'
报错
Traceback (most recent call last):
File "weixin.py", line 5, in
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

  1. 安装

    tar xvf setuptools-12.0.3.tar.gz

    cd setuptools-12.0.3

    python setup.py install

    https://files.pythonhosted.org/packages/8b/8a/1b2aadd922db1afe6bc107b03de41d6d37a28a5923383e60695fba24ae81/pip-19.2.1.tar.gz

    cd pip-18.0

    python setup.py install

测试后会在微信企业号中收到我们创建的应用所发出的消息
Zabbix 微信报警_第13张图片

Zabbix 微信报警
Zabbix 微信报警_第14张图片

添加用户组
Zabbix 微信报警_第15张图片