一、注册企业邮箱

1.1、企业微信告警优势:让我们实时接收到信息,加快问题的处理,比传统邮件更便捷;

   如果没有企业微信,那么我们首先到企业微信官网https://work.weixin.qq.com进行注册。

Zabbix使用企业微信进行告警_企业微信Zabbix使用企业微信进行告警_告警_02

二、企业微信配置

2.1、在通讯录中创建部门

    创建部门,类似于组,把相关的人员放到这个部门里,创建部门后,会用到部门ID,报警消息会根据部门ID发到部门的相关人员。

Zabbix使用企业微信进行告警_企业微信_03

Zabbix使用企业微信进行告警_企业微信_04

Zabbix使用企业微信进行告警_告警_05

2.2、增加部门人员

    添加成员--填写资料。

Zabbix使用企业微信进行告警_zabbix _06

2.3、添加应用

    消息发送的接口,这里需要记住应用的AgentId以及Secret,用于发送token的获取,按照设定,只有运维部的人员可以看到此应用,即可以通过此应用获取到报警信息。

Zabbix使用企业微信进行告警_告警_07

得到这样的界面再次提醒记住AgentidSecret):

Zabbix使用企业微信进行告警_zabbix _08

2.4、获取企业ID(需要有成员加入后才能显示CorpID):

Zabbix使用企业微信进行告警_zabbix _09

三、测试微信消息发送接口

    微信接口的调用需要一个凭证:access_token,通过CorpID Secret才能获取到access_token,但是获取到的token有效期为7200秒。

可以通过下面的接口调试工具以及接口说明文档来进行测试(返回200表示成功)

接口调试工具:http://work.weixin.qq.com/api/devtools/devtool.php

接口说明文档:https://work.weixin.qq.com/api/doc#10167

Zabbix使用企业微信进行告警_zabbix _10

测试成功显示如下:

Zabbix使用企业微信进行告警_企业微信_11

四、报警脚本

4.1、编写python脚本

[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/

[root@zabbix-server alertscripts]# vim wechat.py

#!/usr/bin/python

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

# zabbix notification confirmation script

# python2.7 or above

 

import requests

import json

import os

import sys

 

Toparty = "2"   #部门id

AgentID = 1000002     #应用id

 

#修改为企业CropIDSecret

CropID = 'wwac7665d19735ca22'

Secret = 'Z6W81GSJe7JwRu6Khbz2V9kUPtBQf31ArnhMiNuFMjU'

 

#获取Token

Gtoken ="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+ CropID + "&corpsecret=" + Secret

headers = {'Content-Type': 'application/json'}

json_data = json.loads(requests.get(Gtoken).content.decode())

token = json_data["access_token"]

 

#消息发送接口

Purl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + token

 

#消息发送函数

def msg(title,message):

    weixin_msg = {

"toparty" : Toparty,

"msgtype" : "textcard",

"agentid" : AgentID,

"textcard" : {

"title" : title,

"description" : message,

"url" : "www.wzlinux.com",

"btntxt":"更多"

          }

      }

    print requests.post(Purl,json.dumps(weixin_msg),headers=headers)

 

if __name__ == '__main__':

    title = sys.argv[1]        #获取第一个参数

    message = sys.argv[2]      #获取第二个参数

    msg(title,message)

[root@zabbix-server alertscripts]# chmod+x wechat.py

[root@zabbix-server alertscripts]# chown zabbix:zabbix wechat.py

[root@zabbix-server alertscripts]# ll

total 4

-rwxr-xr-x 1 zabbix zabbix 2080 May 21 13:28 wechat.py

[root@zabbix-server alertscripts]# ./wechat.py 1 2

Traceback (most recent call last):

  File "./wechat.py", line 5, in <module>

    import requests,sys,json

ImportError: No module named requests

[root@zabbix-server alertscripts]# yum -y install python-setuptools

[root@zabbix-server alertscripts]# easy_install pip

[root@zabbix-server alertscripts]# pip install requests

[root@zabbix-server alertscripts]# ./wechat.py 1 2

<Response [200]>

五、Zabbix配置

5.1、添加Media types

    首先需要在zabbix server的配置文件开启上面脚本的目录,然后才可以使用,我们添加两个参数,一个是报警的标题,一个是报警信息的内容,用于传给脚本的两个参数。

Step1:管理--报警媒介类型--创建媒体类型

Zabbix使用企业微信进行告警_告警_12

Zabbix使用企业微信进行告警_告警_13

Zabbix使用企业微信进行告警_告警_14

Step2:添加动作(配置--动作--创建动作):

Zabbix使用企业微信进行告警_告警_15

Zabbix使用企业微信进行告警_企业微信_16

Zabbix使用企业微信进行告警_企业微信_17

Zabbix使用企业微信进行告警_企业微信_18


注:不管能否解决你遇到的问题,欢迎相互交流,共同提高!