• zabbix配置钉钉告警(附含钉钉告警脚本 · 实战亲测无任何问题)


    🍁博主简介

      🏅云计算领域优质创作者
      🏅华为云开发者社区专家博主
      🏅阿里云开发者社区专家博主
    💊交流社区:运维交流社区 欢迎大家的加入!

    钉钉上操作(钉钉告警以关键词方式告警)

    创建钉钉群

    • 登录钉钉
    • 创建钉钉群

    手机、电脑都可以,这里以电脑举例

    在这里插入图片描述

    这里可以自己随便选择,我选择的是内部群

    在这里插入图片描述

    邀请好友,起一个群名称就可以了;

    在这里插入图片描述

    创建完成。

    添加机器人–>设置关键词

    创建完成之后点击群设置

    在这里插入图片描述

    往下翻找到“机器人”

    在这里插入图片描述

    点击添加机器人

    在这里插入图片描述

    添加”机器人“–>“自定义”

    在这里插入图片描述

    点击添加

    在这里插入图片描述

    在这里插入图片描述

    生成webhook(请保管好webhook的值;后面需要用到。)

    请保管好webhook的值;后面需要用到。

    在这里插入图片描述

    在这里插入图片描述

    服务器上操作

    • 配置钉钉脚本

    安装python或者python3教程可参考:Linux下安装Python3.6.8(超级详细)【Linux】中安装pip(详细教程)

    #将脚本写在/usr/lib/zabbix/alertscripts/目录下
    [root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/
    
    ##安装python或者python3
    [root@zabbix alertscripts]# yum install python3
     
    [root@zabbix alertscripts]# vim dingding.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    #!/usr/bin/env python
    # -*- coding: utf-8 -*- 
    import requests
    import json
    import sys
    import os
    import datetime
    webhook = "https://oapi.dingtalk.com/robot/send?access_token=237132311231w4ru3rweehfiuqeor21o34u1923412werqwrq223"
    user=sys.argv[1]
    subject=sys.argv[2]
    text=sys.argv[3]
    data={
            "msgtype": "text",
            "text": {
                    "content": "%s%s"%(subject,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("/usr/lib/zabbix/alertscripts/log/dingding.log"):
            f=open("/usr/lib/zabbix/alertscripts/log/dingding.log","a+")
    else:
            f=open("/usr/lib/zabbix/alertscripts/log/dingding.log","w+")
    f.write("\n"+"--"*30)
    if x.json()["errcode"] == 0:
            f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
            f.close()
    else:
            f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送失败"+"\n"+str(text))
            f.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    在这里插入图片描述

    #为脚本添加执行权限
    [root@zabbix alertscripts]# chmod +x dingding.py
     
    #修改脚本的属主和属组:
    [root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 创建日志文件:
    [root@zabbix alertscripts]# mkdir -p /usr/lib/zabbix/log/
     
    [root@zabbix alertscripts]# touch /usr/lib/zabbix/log/dingding.log
     
    [root@zabbix alertscripts]# chown zabbix.zabbix -R /usr/lib/zabbix/log/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 测试脚本是否能运行成功:

    注意关键词;

    #py脚本 手机号 关键词 告警信息
    ./dingding.py 12312312312 告警 test
    
    
    • 1
    • 2
    • 3

    手机号写的正确的话就可以直接@他,如果随便写的就不会输出,如下图的上(正确手机号)、下(错误手机号)

    在这里插入图片描述

    成功接收到信息,完成!

    web页面操作

    • 管理–>报警媒介类型–>创建媒体类型

    在这里插入图片描述

    {ALERT.SUBJECT}
    {ALERT.MESSAGE}
    {ALERT.SENDTO}
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    在这里插入图片描述

    • 配置–>动作–>创建动作

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    #告警操作内容:
    ##标题:
    服务器:{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}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    操作添加:

    在这里插入图片描述

    恢复操作添加:

    在这里插入图片描述

    在这里插入图片描述

    • 个人中心–>报警媒介–>添加

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    钉钉接收告警信息测试

    自己设置好服务器的监控项触发器,让他告警;

    在这里插入图片描述

    成功收到,完成!!!

  • 相关阅读:
    南大通用数据库-Gbase-8a-学习-08-集群节点添加数据副本
    MySQL总结 (思维导图,常用)
    SpringBoot进阶教程(七十七)WebSocket
    redhat7.6安装weblogic12c
    【Windows Docker:安装nginx】
    10. Java异常(Exception)
    系列三、Linux中安装Nginx
    FUNCTION 表示 getter setter
    卓越进行时 | 赛宁助力职业院校实践“岗课赛证训创”育人模式
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
  • 原文地址:https://blog.csdn.net/liu_chen_yang/article/details/130384564