• zabbix5.0企业微信报警


    • 先去申请企业微信,要以管理员的权限创建机器人,建完机器人后会有一串webhook,类似这种
    https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx509-4f42-xxxxxxxx
    
    • 测试这个钩子能不能用,具体使用方法可以看微信机器人文档
    https://work.weixin.qq.com/help?doc_id=13376
    
    • 看完机器人文档后,需要写个python脚本调用这个钩子机器人,这个脚本放在/usr/lib/zabbix/alertscripts/目录下(注意服务器上要安装python3环境!
    #!/usr/local/python3/bin/python3
    # coding:utf-8
    # zabbix企业微信报警
    import requests, json, sys, os, datetime
    
    #微信钩子机器人地址
    webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxxx"
    
    #zabbix传过来的三个变量
    user = sys.argv[1]
    title = sys.argv[2]
    text = sys.argv[3]
    
    #每发送一次报警,就记一次日志
    file = r"/var/log/zabbix/send2wechat.log"
    
    #报警的信息
    data = {
        "msgtype": "markdown",
        "markdown": {
            "content": title + "
    " + text
        }
    }
    
    #请求这个钩子机器人
    headers = {'Content-Type': 'application/json'}
    x = requests.post(url=webhook, data=json.dumps(data), headers=headers)
    if os.path.exists(file):
        f = open(file, "a+")
    else:
        f = open(file, "w+")
        f.write(" " + " - -" * 30)
        f.write("
    ")
        
    #记录日志
    if x.json()["errcode"] == 0:
        f.write(" "+ str(datetime.datetime.now()) + " " + str(user) + " " + "发送成功" + " " + str(title) + "
    ")
        f.close()
    else:
        f.write(" "+ str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + " " + str(title) + "
    ")
        f.close()  
    • 去zabbix页面创建报警类型

      • 脚本名称就是刚才创建的python脚本

      • 故障报警信息(#和>都需要打上,markdown标记):
    # 服务故障: <font color="warning">{EVENT.NAME}</font>
    {
    > 告警主机: **{HOST.NAME}**
    > 主机地址: **{HOST.IP}**
    > 监控项目: {ITEM.NAME}
    > 当前取值: {ITEM.LASTVALUE}
    > 告警等级: {TRIGGER.SEVERITY}
    > 告警时间: {EVENT.DATE}-{EVENT.TIME}
    > 事件ID: {EVENT.ID}
    }
      • 类似这样

      •  故障恢复信息(#和>都需要打上,markdown标记):
    # 故障恢复: <font color="info">{EVENT.NAME}</font>
    {
    > 主机名称: **{HOST.NAME}**
    > 主机地址: **{HOST.IP}**
    > 告警名称: {EVENT.NAME}
    > 持续时长: {EVENT.DURATION}
    > 恢复时间: {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME}  
    > 当前状态: {TRIGGER.STATUS}
    > 当前取值: {ITEM.LASTVALUE}
    > 事件ID: {EVENT.ID}
    }
    
      • 类似这样

    • 创建发送报警的用户

     

     ***用户的报警媒介这必须加上刚刚创建的媒介,不然消息发不出去

     

    •  创建触发器动作

      • 条件是所有报警动作都触发条件

     

     

    •  触发器和监控项自己去创建,之后搞挂一个服务,企业微信上就会收到消息了

      

    •  zabbix服务器上的监控脚本日志

     --------------------------

    根据限定条件,把领导想看的报警发到他们自己群里

    依照上面的博客,在创建一个报警媒介

     在用户里面需要把刚刚创建的媒介也加上去

    添加触发器动作,第二个动作限定好条件,这样再发消息,领导就能看到他想看到的了

      

      

    初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
  • 相关阅读:
    为什么 执行typeof null时会返回字符串“object”?
    vue init webpack-simple 模板中全局引入Jquery正确使用方法 可保jQuery插件正常使用
    掘金文章图片弹出放大缩小效果
    神奇的CSS3混合模式转载
    随笔
    vue-cli 项目中绝对路径引用的相关资源 npm run build 后 打开页面报404错误
    软件工程期末展示材料——RUC自习助手
    RUC自习助手_用户手册
    【声明】RUC自习助手APP(Android版)已上线,可下载
    RUC自习助手_测试文档
  • 原文地址:https://www.cnblogs.com/forlive/p/12987977.html
Copyright © 2020-2023  润新知