4EWQE 发表于 2017-11-7 10:19:07

Zabbix 3.4.3之企业微信报警

一、企业微信注册
   微信的报警方式可以让我们随时随地接收到信息,加快问题的处理,比传统邮件更加方便,首先我们先打开企业微信的地址 https://work.weixin.qq.com
1、填写申请信息

2、下一步
    根据注册流程步骤进行后面的操作,直到注册成功。
二、企业微信配置
1、创建部门

    首先我们要创建部门,类似于组,把相关的人员放到这个部门里面,创建部门之后,我们会用到部门id,报警消息根据部门id发到部门的相关人员。

    根据自己的需求填写,所属部门也可以是现有部门的子部门,具有层级所属关系。

    查看部门id,我们以后会用到,我这里部门id是2。

2、给部门增加人员
    点击添加成员,然后让用户关注就可以了。

3、添加应用
    用于消息发送的接口,这里我们需要记住应用的id以及secret,用于发送token的获取,按照我们的设定,目前只有运维部的人员可以看到此应用,即可以通过此应用获取到报警信息。

    记住这里的Agentid和Secret。

4、获取企业ID


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

    调用微信接口需要一个调用接口的凭证:access_token,通过CropID 、Secret才能获取到access_token,但是获取到的token有效期为7200秒。
    我们可以通过下面的接口调试工具以及接口说明文档进行测试。

接口调试工具:http://work.weixin.qq.com/api/devtools/devtool.php
接口说明文档:https://work.weixin.qq.com/api/doc#10167
    调试成功页面如下。

四、报警脚本
1、编写python脚本
   脚本使用的python版本为2.7以上,所以请安装CentOS 7。
vim /usr/local/zabbix/alertscripts/wechat.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/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 = 4   #应用id

#修改为企业CropID和Secret
CropID = 'wx8d46d3xxxxx993'
Secret = 'QCjzy2lH2ZB7MUG6uowChyChPsOxxxxxxxxxxxxxxTVR4saIw3Ezznh'

#获取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      #获取第一个参数
    message = sys.argv      #获取第二个参数
    msg(title,message)





1
chmod +x /usr/local/zabbix/alertscripts/wechat.py




2、测试脚本

    微信已经可以接收到消息,那脚本已经没有什么问题了。

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

2、给用户添加报警媒介

3、创建Action


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}


服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
}


服务器:{HOST.NAME}: 报警确认
{
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:
"{ACK.MESSAGE}"
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
}




六、报警测试
    关掉zabbix agent。




蜡笔喜欢小新 发表于 2017-11-7 10:29:30

1111

小菜鸡 发表于 2022-7-26 09:47:33

我用的和你一样 但是我企业微信收不到消息,为什么

eastmoney 发表于 2024-3-1 21:14:43

无回帖,不论坛,这才是人道。
页: [1]
查看完整版本: Zabbix 3.4.3之企业微信报警