• 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

    操作添加:

    在这里插入图片描述

    恢复操作添加:

    在这里插入图片描述

    在这里插入图片描述

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

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    钉钉接收告警信息测试

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

    在这里插入图片描述

    成功收到,完成!!!

  • 相关阅读:
    【IMX6ULL驱动开发学习】24.关于mmap为什么能直接操作LCD显示
    OpenAI 现已开始考虑自研 AI 芯片战略
    【LeetCode】36、有效的数独
    express学习6-express参数中get参数的获取
    ClickHouse基本原理
    第一次线上 OOM 事故,竟和 where 1 = 1 有关
    c++11 标准模板(STL)string(四)
    2022eclipse下载安装与使用教程
    06 tp6 的数据更新(改)及删除 《ThinkPHP6 入门到电商实战》
    oracle-使用PLSQL工具自行修改用户密码
  • 原文地址:https://blog.csdn.net/liu_chen_yang/article/details/130384564