zoukankan      html  css  js  c++  java
  • zabbix企业微信报警实现

    企业微信配置

    # 注册

    企业微信注册地址:https://work.weixin.qq.com

    笔者注册的企业微信名称为 5iik

    # 配置

    # 在主干5iik(企业名称)下添加子部门(监控组),并将自己加入到组中;

    # 依次点击 应用管理 > 创建应用,将可见范围选择 "监控组";

    # 笔者创建的应用名称为 "监控示警"

    # 至此,企业微信配置完毕,需要收集的信息如下:

    1)成员账号

    2)组织部门ID

    3)Agentld和Secret

    4)企业ID

    zabbix服务端配置

    # 安装Python模块

    # pip install simplejson

    # zabbix server配置

    # 默认zabbix调用的脚本目录为 /usr/lib/zabbix/alertscripts

    # 配置监控监本

    [root@kazihuo ~]# cat /usr/lib/zabbix/alertscripts/wechat.py

     1 #!/usr/bin/python
     2 #_*_coding:utf-8 _*_
     3  
     4 import urllib,urllib2
     5 import json
     6 import sys
     7 import simplejson
     8  
     9 reload(sys)
    10 sys.setdefaultencoding('utf-8')
    11  
    12  
    13 def gettoken(corpid,corpsecret):
    14     gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
    15     print  gettoken_url
    16     try:
    17         token_file = urllib2.urlopen(gettoken_url)
    18     except urllib2.HTTPError as e:
    19         print e.code
    20         print e.read().decode("utf8")
    21         sys.exit()
    22     token_data = token_file.read().decode('utf-8')
    23     token_json = json.loads(token_data)
    24     token_json.keys()
    25     token = token_json['access_token']
    26     return token
    27  
    28 def senddata(access_token,user,subject,content):
    29     send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
    30     send_values = {
    31         "touser":"LuoMuRui",    #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
    32         "toparty":"2",    #企业号中的部门id。
    33         "msgtype":"text", #消息类型。
    34         "agentid":"1000002",    #企业号中的应用id。
    35         "text":{
    36             "content":subject + '
    ' + content
    37            },
    38         "safe":"0"
    39         }
    40 #    send_data = json.dumps(send_values, ensure_ascii=False)
    41     send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
    42     send_request = urllib2.Request(send_url, send_data)
    43     response = json.loads(urllib2.urlopen(send_request).read())
    44     print str(response)
    45  
    46  
    47 if __name__ == '__main__':
    48     user = str(sys.argv[1])     #zabbix传过来的第一个参数
    49     subject = str(sys.argv[2])  #zabbix传过来的第二个参数
    50     content = str(sys.argv[3])  #zabbix传过来的第三个参数
    51  
    52     corpid =  'ww15a76b039cce012c'   #企业号标识
    53     corpsecret = '5aKnj_gPRp6haFmWvly7RxMXy97S8nUEzDxxxxxxxxx'  #Secret是管理组凭证密钥
    54     accesstoken = gettoken(corpid,corpsecret)
    55     senddata(accesstoken,user,subject,content)

    # 报警测试

    [root@kazihuo ~]# python /usr/lib/zabbix/alertscripts/wechat.py LuoMuRui TEST "It's a test."

    https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ww15a76b039cce012c&corpsecret=5aKnj_gPRp6haFmWvly7RxMXy97S8nUEzDTsiQmB9e0

    {u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}

    # 执行脚本后将收到企业微信发来的消息,如下:

    zabbix界面配置

    # 报警思路

        先创建微信脚本报警媒介,然后创建报警用户,并关联报警媒介,再创建动作。当监控项的监控指标异常,并达到指定的报警级别后,会触发动作进行相应的操作(给指定的报警用户发送信息),指定用户收到报警信息后,通过报警媒介发出微信告警消息!

    # 页面操作

    # 创建报警媒介

    # 依次点击 Administration > Media types > Create media type;

    方便复制:

    {ALERT.SENDTO}

    {ALERT.SUBJECT}

    {ALERT.MESSAGE}

    # 创建用户(wc)

    # 依次点击 Administrator > User > Create user;

    # 配置 Media;

    # 创建动作

    # 依次点击Configuration > Actions > Create action;

    方便复制:

    [[ 告警信息 ]]

    {TRIGGER.NAME}

    告警主机: {HOSTNAME1}

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

    告警等级: {TRIGGER.SEVERITY}

    告警项目: {TRIGGER.KEY1}

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

    事件ID: {EVENT.ID}

    方便复制:

    [[ 恢复信息 ]]

    {TRIGGER.NAME}

    恢复主机: {HOSTNAME1}

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

    恢复项目: {TRIGGER.KEY1}

    事件ID: {EVENT.ID}

    告警功能验证

    # 在zabbix server服务器上将zabbix_agent服务停掉,几分钟后可在zabbix面板看到故障信息;

    [root@kazihuo ~]# systemctl stop zabbix-agent

    # 过几分钟后启动agent服务,整个过程收到的微信告警如下:

    重点说明

    1、当监控告警收件人需要增加时,只需将其微信加入企业微信中对应的 "监控组" 即可;

    2、当微信用户登录了企业微信后,企业微信发送的报警信息就只能在企业微信中接收,若需要在微信中也能收到告警信息,需要找企业微信管理员索要"微工作台"的二维码并关注。然后在企业微信app中依次点击 "我" > "设置" > "新消息通知",然后关闭 "仅在企业微信中接收消息"即可!

  • 相关阅读:
    [BZOJ4029][HEOI2015]定价
    [BZOJ3261]最大异或和
    [BZOJ3166][Heoi2013]Alo
    [BZOJ1030][JSOI2007]文本生成器
    [BZOJ2595][Wc2008]游览计划
    Speculative store buffer
    十四 oracle 视图
    十三oracle --控制结构(分支,循环,控制)
    十二、oracle 数据库(表)的逻辑备份与恢复
    十一、oracle 数据库管理员
  • 原文地址:https://www.cnblogs.com/kazihuo/p/11264292.html
Copyright © 2011-2022 走看看