- A+
所属分类:Zabbix
钉钉配置
创建钉钉群聊,发起群聊

创建一个内部群

输入群聊名称

添加钉钉机器人
进入已创建的群聊,点击群设置图标

点击添加机器人

选择自定义

输入机器人名称

保存Webhook URL,复制生成的Webhook URL,后续配置Zabbix时会用到

Zabbix配置
在Zabbix服务器上安装requests
模块,用于发送HTTP请求
yum -y install epel-release
yum -y install python3-pip
pip3 install requests
创建告警脚本
vim /usr/local/zabbix/share/zabbix/alertscripts/dingtalk_alert.py
#!/usr/bin/env python
# -- coding: utf-8 --
import json
import requests
import sys
# 钉钉机器人Webhook地址
Dingtalkaccesstoken = "144f44aac70ffa1f0cb79d217649faa726a26596640792132e0d9d4c11630528" # 替换为你的钉钉机器人accesstoken
webhook = "https://oapi.dingtalk.com/robot/send?access_token=" + Dingtalkaccesstoken
def formatmessage(title, content):
message_template = "{}\n{}".format(title, content)
return message_template
def sendmsg(title, content):
headers = {'Content-Type': 'application/json'}
message = formatmessage(title, content)
data = {
"msgtype": "text",
"text": {
"content": message
}
}
try:
response = requests.post(webhook, headers=headers, data=json.dumps(data))
return response.status_code
except Exception as e:
print("发送失败,错误信息:", e)
return None
if __name__ == "__main__":
if len(sys.argv) < 3:
print("使用方法:python dingtalkalert.py '标题' '内容'")
sys.exit(1)
title = sys.argv[1]
content = sys.argv[2]
status_code = sendmsg(title, content)
if status_code == 200:
print("消息发送成功")
else:
print("消息发送失败,状态码:", status_code)
给脚本执行权限
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/dingtalk_alert.py
修改脚本的属主和属组
chown -R zabbix:zabbix /usr/local/zabbix*
编辑zabbix_server.conf
文件,设置告警脚本路径
vim /usr/local/zabbix/etc/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
重启Zabbix服务器以使配置生效
systemctl restart zabbix-server.service
测试一下脚本是否成功
python /usr/local/zabbix/share/zabbix/alertscripts/dingtalk_alert.py "测试标题" "告警"

配置Zabbix告警媒介类型
访问Zabbix Web界面,进入配置 --> 媒介 --> 点击"创建媒介类型"

填写以下信息:名称:DingTalk alarm,类型:脚本,脚本:选择之前创建的脚本文件,脚本参数:{ALERT.SUBJECT} {ALERT.MESSAGE} {ALERT.SENDTO} --> 添加

参数解释
ALERT.SUBJECT:警报主题,简要说明警报内容;
ALERT.MESSAGE:警报消息,详细描述警报信息;
ALERT.SENDTO:发送对象,指定警报接收者。
创建告警动作
进入配置 --> 动作 --> 触发器动作 --> 点击创建动作

自定义名称 --> 操作


下面的仅发送到是刚才配置的媒介类型
操作添加
主题
服务器:{HOSTNAME1}发生: {TRIGGER.NAME} 故障!
消息
消息内容告警主机: {HOSTNAME1}
主机地址: {HOST.IP}
告警等级: {TRIGGER.SEVERITY}
监控项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}
告警信息: {TRIGGER.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
事件ID: {EVENT.ID}

恢复操作添加
主题
服务器:{HOSTNAME1}的{TRIGGER.NAME}故障已恢复!
消息
恢复主机: {HOSTNAME1}
主机地址: {HOST.IP}
告警等级: {TRIGGER.SEVERITY}
监控项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}(已恢复至正常值)
当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}(已恢复)
告警信息: {TRIGGER.NAME}(已处理)
恢复时间: {EVENT.DATE} {EVENT.TIME}
事件ID: {EVENT.ID}

用户设置 --> 配置 --> 报警媒介 --> 添加


钉钉告警信息测试
