Zabbix告警方式—微信告警

958次阅读

共计 2701 个字符,预计需要花费 7 分钟才能阅读完成。

微信告警

微信企业号注册与使用

企业号注册:https://qy.weixin.qq.com/

 

企业号使用教程

登录新建的企业号,通过提前把企业成员信息添加到组织或者部门,需要填写手机号、微信号或邮箱,通过这样方式让别人扫码关注企业公众号,为了后面企业号推送消息给企业成员。

新建管理组,并加入需要通知的微信用户

Zabbix告警方式---微信告警

创建应用

点击应用中心–新建应用

 

Zabbix告警方式---微信告警

Zabbix告警方式---微信告警

**记录此处应用ID为1000002

 

部门设置管理员

1、点击 设置–权限管理–普通管理组–新建

2、设置应用权限和通讯录权限

Zabbix告警方式---微信告警

3、记录企业ID与Secert

Zabbix告警方式---微信告警

 

 

至此,公众号配置完毕。

 

微信脚本调用

下载微信脚本:

[url href=http://download.cloudcared.cn/zabbix/wechat.py]wechat.py[/url]

编辑脚本,修改为自己的信息:

# -*- coding:utf-8 -*-
#!/usr/bin/python3
import urllib.request
import json
import simplejson
import re,sys,os,requests,datetime,time

def gettoken(corpid, corpsecret):
    gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
    print(gettoken_url)
    try:
        token_file = urllib.request.urlopen(gettoken_url)
    except urllib.request.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": "wangxiao", #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送
        "msgtype": "textcard",#消息类型
        "agentid": "1000002", #企业号中的应用id
        "textcard": {
            "title": "监控告警",
            "description": subject + '\n' + content,
            "url": "URL",
            "btntxt": "更多"
        },
        "safe": "0"
    }
    send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
    #print(send_data)
    send_request = urllib.request.Request(send_url,send_data)
    #print(send_request)
    response = json.loads(urllib.request.urlopen(send_request).read())
    print(str(response))

if __name__ == '__main__':
    user = sys.argv[1]
    subject = sys.argv[2]
    content = sys.argv[3]
    corpid = 'wxff7'  #CorpID是企业号的标识
    corpsecret = 'KXmlfVf'  #corpsecretSecret是应用的Secret
    accesstoken = gettoken(corpid, corpsecret)
    senddata(accesstoken, user, subject, content)

修改完成后,将其放至/usr/lib/zabbix/alertscripts,并修改相关权限

chown zabbix.zabbix wechat.py
chmod +x wechat.py

测试脚本发送消息至企业号

安装simplejson

pip3 install simplejson==3.8.2
pip3 install requests

测试:

[root@zabbix alertscripts]# python3 wechat.py test-msg test hello
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wxff7d678b35937141&corpsecret=KXmlfVf8sLS3wTQ9fVXO48f8d_iJ9n7WSAX6Uwqoyv52aS8InX64zVi6zk5Fdo95
{'errcode': 0, 'errmsg': 'ok', 'invaliduser': '', 'invalidparty': '2'}

 

Zabbix告警方式---微信告警

 

 

Zabbix-web前端设置

1、通过管理–示警媒介类型–创建媒体类型

Zabbix告警方式---微信告警

脚本参数:

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

2、点击 用户–Admin–示警媒介–添加 微信报警

Zabbix告警方式---微信告警

注意:此处收件人填写应用ID:100002

3、点击 组态–动作–创建动作,名称为:微信报警,触发条件如下,操作添加Admin用户,并设置送达方式为微信告警

Zabbix告警方式---微信告警

选择告警操作

告警主机:{HOST.NAME}
阈值名称:{TRIGGER.NAME}
当前状态:{TRIGGER.STATUS} {ITEM.VALUE1}
告警时间:{EVENT.DATE} {EVENT.TIME}

Zabbix告警方式---微信告警

选择恢复操作

告警主机:{HOST.NAME}
阈值名称:{TRIGGER.NAME}
当前状态:{TRIGGER.STATUS} {ITEM.VALUE1}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.TIME}

Zabbix告警方式---微信告警

4、完成后如下图:

Zabbix告警方式---微信告警

 

测试微信报警

1、停止HTTP服务,等待告警

2、邮箱与微信均顺利收到告警,相关截图如下:

3、查看监控界面已经检测到,并相关示警媒介正在告知中:

Zabbix告警方式---微信告警

 

微信:

Zabbix告警方式---微信告警

正文完
 
mervinwang
版权声明:本站原创文章,由 mervinwang 2018-08-18发表,共计2701字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
文章搜索