zabbix实现微信报警

1.申请企业微信

1.1 注册企业微信的地址

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

zabbix实现微信报警_第1张图片

 

1.2 按照提示进行填写

zabbix实现微信报警_第2张图片

1.3 完善个人信息:

zabbix实现微信报警_第3张图片

1.4 创建应用

zabbix实现微信报警_第4张图片

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

zabbix实现微信报警_第5张图片

zabbix实现微信报警_第6张图片

zabbix实现微信报警_第7张图片

zabbix实现微信报警_第8张图片

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 

zabbix实现微信报警_第9张图片

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 编写脚本(https://github.com/chuan717/Zabbix-Alert-WeChat/blob/master/wechat.py)

 

######shell脚本:weixin.sh

#!/bin/bash
###SCRIPT_NAME:weixin.sh###
###send message from weixin for zabbix monitor###
###wuhf###
###V1-2019-06-18###

CropID='ww37662****'
Secret='yD04iYsPMipqWRfGduBjuJ8uzb7j******'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}')

PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"

function body() {
local int AppID=1000002 #企业号中的应用id
local UserID=$1 #部门成员id,zabbix中定义的微信接收者
local PartyID=1 #部门id,定义了范围,组内成员都可接收到消息
local Msg=$(echo "$@" | cut -d" " -f3-)
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'" $AppID "\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL


######python脚本:wechat.py

#!/usr/bin/python2.7
#_*_coding:utf-8 _*_
import requests,sys,json
import urllib3
urllib3.disable_warnings()

reload(sys)
sys.setdefaultencoding('utf-8')

def GetToken(Corpid,Secret):
    Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
    Data = {
        "corpid":Corpid,
        "corpsecret":Secret
    }
    r = requests.get(url=Url,params=Data,verify=False)
    Token = r.json()['access_token']
    return Token

def SendMessage(Token,User,Agentid,Subject,Content):
    Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
    Data = {
        "touser": User,                                 # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
        #"totag": Tagid,                                # 企业号中的部门id,群发时使用。
        "msgtype": "text",                              # 消息类型。
        "agentid": Agentid,                             # 企业号中的应用id。
        "text": {
            "content": Subject + '\n' + Content
        },
        "safe": "0"
    }
    r = requests.post(url=Url,data=json.dumps(Data),verify=False)
    return r.text


if __name__ == '__main__':
    User = sys.argv[1]                                                              # zabbix传过来的第一个参数
    Subject = sys.argv[2]                                                           # zabbix传过来的第二个参数
    Content = sys.argv[3]                                                           # zabbix传过来的第三个参数

    Corpid = "ww376622********"                                                   # CorpID是企业号的标识
    Secret = "yD04iYsPM***************"     # Secret是管理组凭证密钥
    #Tagid = "1"                                                                     # 通讯录标签ID
    User = "PenHu"                                                                    #指定用户名
    Agentid = "1000002"                                                                   # 应用ID

    Token = GetToken(Corpid, Secret)
    Status = SendMessage(Token,User,Agentid,Subject,Content)
    print Status

4.4 授权

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

 

5.zabbix添加微信报警

5.1 添加报警媒介

zabbix实现微信报警_第10张图片

参数:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

5.2 管理报警媒介

zabbix实现微信报警_第11张图片

5.3 用户授权

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

zabbix实现微信报警_第12张图片

zabbix实现微信报警_第13张图片

zabbix实现微信报警_第14张图片

5.4 创建动作

zabbix实现微信报警_第15张图片

zabbix实现微信报警_第16张图片

zabbix实现微信报警_第17张图片

[{TRIGGER.SEVERITY}]服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!

告警主机: {HOSTNAME1}
主机分组: {TRIGGER.HOSTGROUP.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}
事件ID: {EVENT.ID}

zabbix实现微信报警_第18张图片

[{TRIGGER.SEVERITY}]服务器:{HOSTNAME1}{TRIGGER.NAME}已恢复!

告警主机: {HOSTNAME1}
主机分组: {TRIGGER.HOSTGROUP.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}
事件ID: {EVENT.ID}

6.验证

6.1 微信收到消息

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

zabbix实现微信报警_第19张图片

zabbix实现微信报警_第20张图片

测试是否微信能收到信息。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(监控系列)