centos7--zabbix3.4微信报警

1.申请企业微信

1.1 注册企业微信的地址

https://qy.weixin.qq.com/ 

 

 

 

1.2 按照提示进行填写

 

 

1.3 完善个人信息:

 

 

1.4 创建应用

 

 

根据提示创建应用:

 

 

1.5 筛出重要信息:

(建议:把下面筛出来的信息保存在一个文本里面)

 

 

 

 

 

 

 

2.调用微信接口

我们配置微信脚本 首先我们需要调用微信接口

调用微信接口需要一个调用接口的凭证:access_token

通过:GropID,Secret才能获取到access_token,但是获取到的token有效期为两分钟

微信企业号接口调试工具地址:http://qydev.weixin.qq.com/debug

打开上面的url,使用上面monitops企业号的monit-manager管理组的CorpID和Secret号获得调用接口凭证access_token,如下

2.1 微信企业号接口调试工具

地址:http://qydev.weixin.qq.com/debug 

 

 

3.下载依赖工具

[root@localhost ~]# wget https://pypi.python.org/packages/f0/07/26b519e6ebb03c2a74989f7571e6ae6b82e9d7d81b8de6fcdbfc643c7b58/simplejson-3.8.2.tar.gz

[root@localhost ~]# tar zxf simplejson-3.8.2.tar.gz

[root@localhost ~]# cd simplejson-3.8.2/

[root@localhost ~]# python setup.py build

[root@localhost ~]# python setup.py install

 

4.编写脚本

4.1 查找脚本文件路径

[root@localhost ~]# find / -name alertscripts

 

 

4.2 修改主配置文件脚本路径

(默认的可以不更改)

 

 

4.3 编写脚本

 

 

#!/usr/bin/python

#_*_coding:utf-8 _*_

 

import urllib,urllib2

import json

import sys

import simplejson

 

reload(sys)

sys.setdefaultencoding('utf-8')

 

def gettoken(corpid,corpsecret):

    gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret

    print  gettoken_url

    try:

        token_file = urllib2.urlopen(gettoken_url)

    except urllib2.HTTPError as e:

        print e.code

        print e.read().decode("utf8")

        sys.exit()

    token_data = token_file.read().decode('utf-8')

    token_json = json.loads(token_data)

    token_json.keys()

    token = token_json['access_token']

    return token

 

def senddata(access_token,user,subject,content):

 

    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token

    send_values = {

        "touser":"WeiGuo",   #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。

        "toparty":"2",        #企业号中的部门id。

        "msgtype":"text",     #消息类型

        "agentid":"1000003",  #企业号中的应用id。

        "text":{

            "content":subject + '\n' + content

           },

        "safe":"0"

        }

#    send_data = json.dumps(send_values, ensure_ascii=False)

    send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')

    send_request = urllib2.Request(send_url, send_data)

    response = json.loads(urllib2.urlopen(send_request).read())

    print str(response)

 

 

if __name__ == '__main__':

    user = str(sys.argv[1])     #zabbix传过来的第一个参数

    subject = str(sys.argv[2])  #zabbix传过来的第二个参数

    content = str(sys.argv[3])  #zabbix传过来的第三个参数

 

    corpid =  'ww7f78865c2ba33afa'     #企业号的标识(上文中提到获取位置)

    corpsecret = 'szAMO1lIFOEH6JuCSIqjuw35zZbKcHdVx76tBhHOon8'    #管理组凭证密钥(上文中提到获取位置)

    accesstoken = gettoken(corpid,corpsecret)

senddata(accesstoken,user,subject,content)

4.4 授权

[root@localhost alertscripts]# chmod 755 wechat.py & chown -R zabbix.zabbix wechat.py

 

 

4.5 试发微信

(WeiGuo是企业微信里面的微信号 hello为标题   zabbix测试为内容)

 

 

 

微信可以看到已经发过来了

5.zabbix添加微信报警

5.1 添加报警媒介

 

 

 

参数:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

5.2 管理报警媒介

 

 

5.3 用户授权

(可创建新用户,也可使用Admin)

 

 

 

 

5.4 创建动作

 

 

 

 

 

 

操作/恢复操作:

{TRIGGER.STATUS}: {TRIGGER.NAME}

告警主机:{HOST.NAME}

主机IP: {HOST.IP}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息:{TRIGGER.NAME}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID: {EVENT.ID}

 

 

 

确认操作:

{TRIGGER.STATUS}: {TRIGGER.NAME}

告警主机:{HOST.NAME}

主机IP: {HOST.IP}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息:{TRIGGER.NAME}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID: {EVENT.ID}

 

6.验证

6.1 微信收到消息

到这里我们就配置完毕了 但是这样的问题是只能用企业微信接到消息 那么如何让我们平时使用的微信也能接到消息呢?

 

 

6.2 断开zabbix-agent测试

(断开之后看是否会有微信消息过来)

zabbix-agent上操作:

[root@localhost ~]# systemctl stop zabbix-agent.service

 

 

 

可以看到微信警告已经发出。

posted @ 2018-10-31 15:38  禾子、  阅读(422)  评论(0编辑  收藏  举报