一、钉钉上操作

1 创建钉钉群

image-20240914163653094

这里自行选择群类型,我选择的是内部群

image-20240914163753590

邀请好友进群,起一个群名

image-20240914163918888

创建钉钉群完成

2 添加机器人

点击右上角设置

image-20240914164019763

往下翻,找到机器人

image-20240914164102427

点击添加机器人

image-20240914164136264

选择自定义

image-20240914164210418

点击添加

\ image-20240914164242364

填写机器人名字,增加自定义关键词

image-20240914164535621

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

image-20240914164619634

点击完成即可完成配置

image-20240914164725706

二、服务器上操作

1 编写钉钉脚本

1.1 安装python3.6.8

可参考:\ Linux下安装python3.6.8

1.2 创建日志文件

[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 配置钉钉脚本

1.2.1 创建python脚本

为了方便管理,将脚本写在/etc/zabbix/data/zabbix/alertscripts

[root@zabbix-server01 ~]# cd /etc/zabbix/data/zabbix/alertscripts
[root@zabbix-server01 alertscripts]# vim dingding.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*- 
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=2618cd9c45fe772848e4079d4c642c86610947f3d72071f17973b8c27b5429c1"
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/log/dingding.log"):
        f=open("/usr/lib/zabbix/log/dingding.log","a+")
else:
        f=open("/usr/lib/zabbix/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()

image-20240918082456802

#为脚本添加执行权限
[root@zabbix alertscripts]# chmod +x dingding.py

#修改脚本的属主和属组:
[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
1.2.2 测试py脚本

在测试脚本之前,需要提前安装python模块

pip3 install requests
#shell脚本 手机号 关键词 告警信息
./dingding.py 12312312312 告警 test

image-20240914174337706

成功收到消息,完成

三、web页面操作

1 添加脚本媒介

依次点击管理 -> 媒介 -> 创建媒介类型

image-20240914174623029

下面要用到的脚本参数

{ALERT.SUBJECT}
{ALERT.MESSAGE}
{ALERT.SENDTO}

填写完成后,点击左下方更新按钮

image-20240914174959358

划到最下面可以看到我们刚刚添加的内容

image-20240914175044552

2 配置动作

依次点击配置 -> 动作 -> 触发器动作 -> 创建动作

image-20240914175224949

image-20240914175329055

依次添加 操作、恢复操作

内容如下

#告警操作内容:
##标题:
服务器:{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}

在这里插入图片描述

  • 操作\ image-20240914175553288
  • 恢复操作\ image-20240914175755356

配置完成后,点击添加

image-20240914175838479

3 添加报警媒介

依次点击 用户设置 -> 配置 -> 添加

image-20240914180116631

添加完记得点击更新

image-20240914180312853

四、钉钉接收告警信息测试

这里我们只做简单测试,停掉zabbix-agent01

进入zabbix-agent01的shell

image-20240914180545953

使用下面命令,停掉zabbix-agent01

systemctl stop zabbix-agent

image-20240914180645102

等待两到三分钟,可以看到主页发现问题

image-20240914181159105

查看钉钉群,可以看到刚刚的预警信息已发送至钉钉

image-20240918081644214

重启agent01的服务,可以看到,恢复信息也已经发送至钉钉群

image-20240918081813572

至此,zabbix自动发送预警及恢复信息到钉钉群,已经全部配置完成✿✿ヽ(°▽°)ノ✿


转自:实现zabbix6.0自动上报预警信息到钉钉群_zabbix 钉钉-CSDN博客

Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-01-16 09:39:24

results matching ""

    No results matching ""