将Zabbix配置为使用钉钉机器人接收告警信息。
配置步骤:
1、在钉钉中创建一个自定义机器人,获取到机器人的Webhook地址,这是接收告警信息的URL。
2、在Zabbix中创建一个媒介类型,用于发送告警信息到钉钉机器人。在Zabbix中,转到“Administration” > “Media Types”并单击“Create Media Type”按钮。
3、在“Create Media Type”页面中,为媒介类型指定一个名称,例如“DingTalk Bot”。在“Type”下拉菜单中,选择“Script”。
4、在“Script parameters”下面的“Script name”字段中,输入路径为/usr/lib/zabbix/alertscripts/dingdingduoren.py,这是一个将告警信息发送到钉钉机器人的脚本。
#!/usr/bin/env python3
#
# dingtalk.py: Script for sending Zabbix alerts to DingTalk.
#
# Usage: ./dingtalk.py <message> <severity>
#
# Required environment variables:
# DINGTALK_ROBOT_URL: the webhook URL of your DingTalk robot
# DINGTALK_ACCESS_TOKEN: the access token of your DingTalk group
#
# The script expects two arguments:
# - <message>: the message to send
# - <severity>: the severity level (OK, WARNING, or PROBLEM)
#
import os
import sys
import json
import requests
if len(sys.argv) < 3:
print(f"Usage: {sys.argv[0]} <message> <severity>")
sys.exit(1)
message = sys.argv[1]
severity = sys.argv[2]
# Map Zabbix severity to DingTalk message type
if severity == "OK":
msgtype = "text"
else:
msgtype = "markdown"
# Build the DingTalk message payload
payload = {
msgtype: {
"title": f"Zabbix Alert - {severity}",
"text": message,
},
}
# Send the message using requests library
robot_url = os.environ.get("DINGTALK_ROBOT_URL")
access_token = os.environ.get("DINGTALK_ACCESS_TOKEN")
url = f"{robot_url}&access_token={access_token}"
headers = {"Content-Type": "application/json"}
response = requests.post(url, headers=headers, data=json.dumps(payload))
if response.status_code != 200:
print(f"Failed to send message: {response.status_code} {response.text}")
sys.exit(1)
这个 Python 脚本使用 requests 库发送 HTTP POST 请求,构建了与原始脚本相同的 JSON 消息负载,并使用环境变量存储钉钉机器人 webhook 地址和群组 access token。你可以将此脚本保存为 /usr/lib/zabbix/alertscripts/dingdingduoren.py 并对其进行必要的更改,以确保它与你的环境和钉钉机器人配置一致。
5、在“Script parameters”下面的“Script parameters”字段中,输入以下内容:
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
6、单击“Add”按钮以保存媒介类型。
7、在Zabbix中创建一个动作,以使用钉钉机器人发送告警信息。在Zabbix中,转到“Configuration” > “Actions”并单击“Create Action”按钮。
- 配置钉钉告警发送动作(Aciton):
8、在“Create Action”页面中,为动作指定一个名称,并将其触发条件设置为需要的值。在“Operations”选项卡中,单击“New”按钮。
9、在“Operation details”页面中,为操作指定一个名称,并选择先前创建的媒介类型。在“Send to”字段中,输入钉钉机器人的Webhook地址。
10、单击“Add”按钮以保存操作,然后单击“Add”按钮以保存动作。
11、确保在Zabbix服务器上安装了所需的依赖项,并将/usr/lib/zabbix/alertscripts/dingdingduoren.py脚本设置为可执行。