• zabbix钉钉报警


    我们在钉钉上建立群聊,然后在群聊上添加钉钉机器人:

    编写,脚本需要放在zabbix 的alertscripts目录下(如果不知道该目录的位置,可以使用find命令查找)

    find / -iname alertscripts

    脚本

    vim /usr/local/zabbix/alertscripts/dingding.py
    #!/usr/bin/env python
    #coding:utf-8
    #zabbix钉钉报警
    import requests,json,sys,os,datetime
    webhook="上面创建钉钉机器人的webhook地址"
    user=sys.argv[1]
    text=sys.argv[3]
    data={
        "msgtype": "text",
        "text": {
            "content": text
        },
        "at": {
            "atMobiles": [
                user
            ],
            "isAtAll": False
        }
    }
    headers = {'Content-Type': 'application/json'}
    x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
    if os.path.exists("/tmp/zabbix_dingding.log"):
        f=open("/tmp/zabbix_dingding.log","a+")
    else:
        f=open("/tmp/zabbix_dingding.log","w+")
    f.write("
    "+"--"*30)
    if x.json()["errcode"] == 0:
        f.write("
    "+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"
    "+str(text))
        f.close()
    else:
        f.write("
    "+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "
    " + str(text))
        f.close()

    脚本创建的时候最好在服务器端新建,不要在windows主机上创建完后再上传到服务器上,很有可能出现无法调用脚本的问题(在服务器上能使用脚本发送测试信息,log日志也可以看到,但是zabbix server 无法调用脚本,动作日志看已经发送,但钉钉收不到信息,log日志也查看不到该信息),我猜测可能是windows和Linux的编码问题

    脚本和log授权

    chmod +x /usr/local/zabbix/alertscripts/dingding.py
    chown zabbix.zabbix  /usr/local/zabbix/alertscripts/dingding.py
    chmod +x  /tmp/zabbix_dingding.log
    chown  zabbix.zabbix   /tmp/zabbix_dingding.log

    操作

    默认接收人 : 
    服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障! 默认信息 : { 报警主机:{HOST.NAME} 主机地址:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 报警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 报警信息:{TRIGGER.NAME} 报警时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID} }

    恢复操作

    默认接收人:
    服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
    默认信息:
    {
    报警主机:{HOST.NAME}
    主机地址:{HOST.IP}
    监控项目:{ITEM.NAME}
    监控取值:{ITEM.LASTVALUE}
    报警等级:{TRIGGER.SEVERITY}
    当前状态:{TRIGGER.STATUS}
    报警信息:{TRIGGER.NAME}
    报警时间:{EVENT.DATE} {EVENT.TIME}
    恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
    持续时间:{EVENT.AGE}
    事件ID:{EVENT.ID}
    }

     日子查看

    [root@JumpFency alertscripts]# more /tmp/zabbix_dingding.log 

    参考:https://blog.51cto.com/m51cto/2051945

  • 相关阅读:
    [自娱自乐] 4、超声波测距模块DIY笔记(四)——终结篇·基于C#上位机软件开发
    [新概念51单片机C语言教程·郭天祥] 1、 基础知识必备
    [起重机监测系统] 2、国标、架构及待测数据方案
    [自娱自乐] 3、超声波测距模块DIY笔记(三)
    [起重机监测系统] 1、基于无线传输的桥式起重机的安全监测方案
    [OpenCV] 3、直线提取 houghlines
    关于MySQL的行转列的简单应用
    java 模拟发送post请求测试
    拦截器通过Spring获取工厂类,注入bean对象
    springboot 表单校验
  • 原文地址:https://www.cnblogs.com/xiaoyou2018/p/10612628.html
Copyright © 2020-2023  润新知