申请企微号

首先,如若使用微信告警,你必须需要一个企业微信号,企业微信申请地址:https://work.weixin.qq.com/
企业微信1.1
进入首页的立即注册,填写具体信息后即可完成申请,具体步骤,建议百度解决,这里不再赘述。。

创建应用

申请完成企业微信并登录后,你需要一个应用来为你推送Zabbix的告警信息,具体步骤为:

应用管理-->应用-->创建应用:
创建app1.1

进入创建应用页后,你需要填入具体的信息:

名称作用
头像也就是APP的头像咯~
名称也就是APP的名字咯~
介绍也就是APP的介绍咯~
可见范围也就是可以接受到告警信息的成员咯,可以是组或者某个用户~

创建app1.2

应用创建完成之后,我们需要得知AgentId和Secret,如下图:

APP信息

编写Python代码

完成企微和APP的创建后,就需要编写脚本了,这里选择使用Python脚本:

Python [root@Monitor1921683204 ~]# vim /usr/local/zabbix/share/zabbix/alertscripts/wechat.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
# Auther: Sunday
# Date: 2019-10-6
# Mail: 2695476342@qq.com

#导入需要的模块
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='' #企业ID
appsecret='' #Secret
agentid=  #Agentid

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、appsecret和Secret,其中,AgentId和Secret我们在上方已经提到,在app里面可以直接看到,那么corpid(企业ID)需要我们在:我的企业-->企业信息下方的企业ID中获得,我们依次写入,如:

配置信息

测试代码

  1. 赋予执行权限

    [root@Monitor1921683204 ~]# chmod +x  /usr/local/zabbix/share/zabbix/alertscripts/wechat.py 
    
  2. 测试发送信息

    [root@Monitor1921683204 ~]# python /usr/local/zabbix/share/zabbix/alertscripts/wechat.py YaoDalao "我是标题丫" "我是信息正文丫"
    

企业微信

其中,YaoDalao是企业微信的账号,如果遇到报错:

Traceback (most recent call last):
  File "wechat.py", line 5, in <module>
    import requests
ImportError: No module named requests

这是因为没有模块:requests导致的,需要PIP安装一下,就可以了

[root@Monitor1921683204 ~]# pip install requests

这里给出一份PIP安装教程:

PIP安装教程

1.使用脚本安装:

[root@Monitor1921683204 ~]# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

[root@Monitor1921683204 ~]# python get-pip.py   #会看到Successfully.....即可

2.使用yum安装:

[root@Monitor1921683204 ~]# yum -y install epel-release

[root@Monitor1921683204 ~]# yum -y install python-pip

3.更新pip

[root@Monitor1921683204 ~]# pip install --upgrade pip

Zabbix配置

添加媒介

接下来,就是配置Zabbix Web端的配置了,步骤为:

配置-->报警媒介类型-->创建媒介类型:

添加媒介

类型为脚本,媒介的名字无所谓,脚本名称为所写的脚本的名称 wechat.py
脚本的三个参数都是zabbix内置变量,分别为:报警收件人:{ALERT.SENDTO}、报警标题:{ALERT.SUBJECT}、报警内容:{ALERT.MESSAGE}

Web端测试

收件人填写您的企业微信账号
Web测试1

Web测试2

Web测试3

用户配置

用户的报警媒介与其他报警方式一样咯~添加Wechat即可

最终

End

Last modification:June 15th, 2020 at 04:22 pm