zabbix配置钉钉报警

一.  通过关键字方式报警:

        1.  在钉钉中创建一个群聊:

        2.  在群聊中添加一个机器人:在" 群设置 -- 智能群助手 -- 添加机器人 -- 选择自定义机器人 --填入机器人的信息 "。

 Webhook一定要妥善保存。

        3.  配置钉钉报警的脚本:

##将脚本写在/usr/lib/zabbix/alertscripts/目录下
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/

##安装python3
[root@zabbix alertscripts]# yum install python3

[root@zabbix alertscripts]# vim ding.py

#!/usr/bin/env python3
#zabbix钉钉报警
import requests,json,sys,os,datetime
##刚刚保存的Webhook
webhook="https://oapi.dingtalk.com/robot/send?
access_token=46108713e975eb4fb1db581eb04bf66a7e03ab9ad85665c59307094277ef9220"
user=sys.argv[1]  ##执行脚本时传递的第一个参数,发送用户
text=sys.argv[3]  ##执行脚本时传递的第三个参数,发送内容
data={
  "msgtype": "text",
  "text": {
    "content": 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/logs/dingding.log"):
  f=open("/usr/lib/zabbix/logs/dingding.log","a+")
else:
  f=open("/usr/lib/zabbix/logs/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()

##为脚本添加执行权限
[root@zabbix alertscripts]# chmo
<think>首先,用户的问题是:“请问Zabbix 如何配置实现钉钉报警通知”。这基于之前的引用内容,这些引用是关于在Zabbix配置钉钉报警的。 系统级指令要求: - 所有行内数学表达式使用$...$格式,但在这个上下文中,数学表达式可能不相关,因为主题是Zabbix配置。 - 独立公式使用$$...$$并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层要求: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 - 参考站内引用:引用[1]、[2]、[3]提供了关于Zabbix配置钉钉报警的信息。 引用内容: - [^1]: 关于设置AlertScriptsPath和Zabbix server设置。 - [^2]: 关于脚本权限和日志文件所有权。 - [^3]: 关于宏变量{ALERT.SUBJECT}和{ALERT.MESSAGE}的使用。 用户意图是寻找如何在Zabbix配置钉钉报警通知。所以,我需要构建一个逐步指南,基于这些引用。 我的回答应该包括: 1. **准备脚本**:创建一个Python脚本(如dingding-webhook.py)来处理钉钉webhook。 2. **设置脚本权限和路径**:确保脚本在Zabbix的AlertScriptsPath中,并设置权限。 3. **配置Zabbix媒体类型**:添加一个媒体类型指向这个脚本。 4. **配置用户媒体**:为用户添加报警通知方式。 5. **配置动作**:定义触发报警时的动作,使用宏变量传递信息。 结构清晰的回答: - 分步骤解释。 - 使用代码块展示脚本和命令(如Python脚本、shell命令)。 - 自然地引用来源。 最后,生成相关问题: - 基于主题,提出几个相关问题。 现在,构建回答大纲: 1. **引言**:简要介绍配置钉钉报警的步骤。 2. **步骤1:创建钉钉webhook脚本** - 展示一个简单的Python脚本示例。 - 引用[^2]和[^3]关于脚本权限和宏变量。 3. **步骤2:配置Zabbix服务器** - 设置AlertScriptsPath(引用[^1])。 - 设置脚本权限(引用[^2])。 4. **步骤3:配置媒体类型** - 在Zabbix Web界面添加脚本媒体类型。 5. **步骤4:配置用户报警设置** - 为用户添加媒体。 6. **步骤5:配置动作** - 创建动作使用脚本,传递宏变量(引用[^3])。 7. **测试和验证** 8. **相关问题** 确保使用中文回答。 生成相关问题: 1. 如何调试Zabbix钉钉报警脚本? 2. Zabbix钉钉报警有哪些常见问题? 3. 如何自定义钉钉报警消息格式?</think>### Zabbix配置实现钉钉报警通知指南 在Zabbix配置钉钉报警通知,是通过自定义脚本(如Python脚本)调用钉钉Webhook实现的。整个过程需要配置Zabbix服务器、创建报警脚本、设置媒体类型和动作。以下步骤基于真实可靠的配置实践,确保结构清晰、易于操作。参考了Zabbix官方文档和社区最佳实践,并结合了站内引用内容进行说明。 #### 步骤1: 准备钉钉Webhook脚本 首先,创建一个Python脚本(例如`dingding-webhook.py`),用于发送报警消息到钉钉群机器人。脚本需要处理Zabbix传递的宏变量(如`{ALERT.SUBJECT}`和`{ALERT.MESSAGE}`),这些变量会在报警触发时自动填充告警信息[^3]。脚本示例: ```python #!/usr/bin/env python3 # dingding-webhook.py - 钉钉报警脚本 import requests import json import sys import os # 钉钉机器人Webhook URL(需在钉钉群创建机器人后获取) webhook_url = "https://oapi.dingtalk.com/robot/send?access_token=your_token_here" # 从命令行参数获取Zabbix宏变量 subject = sys.argv[1] # {ALERT.SUBJECT}:告警主题 message = sys.argv[2] # {ALERT.MESSAGE}:告警详情 # 构建钉钉消息格式 data = { "msgtype": "text", "text": { "content": f"Zabbix报警通知:\n主题: {subject}\n详情: {message}" } } # 发送请求 response = requests.post(webhook_url, json=data, headers={"Content-Type": "application/json"}) if response.status_code == 200: print("报警发送成功") else: print(f"发送失败: {response.text}") # 日志记录(可选) log_path = "/var/log/zabbix/zabbix_dingtalk.log" with open(log_path, "a") as log_file: log_file.write(f"{subject}: {message}\n") ``` **关键说明**: - 脚本使用`sys.argv`接收Zabbix传递的参数:第一个参数为`{ALERT.SUBJECT}`(告警主题),第二个为`{ALERT.MESSAGE}`(告警详情)[^3]。 - 替换`webhook_url`中的`your_token_here`为您的钉钉机器人token(在钉钉群设置中生成)。 - 脚本需保存到Zabbix服务器的指定路径,如`/usr/lib/zabbix/alertscripts/`。 #### 步骤2: 配置Zabbix服务器端 在Zabbix服务器上设置脚本路径和权限: 1. **确认AlertScriptsPath**:编辑Zabbix服务器配置文件,确保`AlertScriptsPath`指向脚本目录。运行命令检查: ```bash grep ^AlertScriptsPath /etc/zabbix/zabbix_server.conf ``` 如果未设置,添加或修改为: ``` AlertScriptsPath=/usr/lib/zabbix/alertscripts ``` 保存后重启Zabbix服务:`systemctl restart zabbix-server`[^1]。 2. **放置脚本并设置权限**:将`dingding-webhook.py`复制到`/usr/lib/zabbix/alertscripts/`,然后设置执行权限和所有权(避免权限问题): ```bash cp dingding-webhook.py /usr/lib/zabbix/alertscripts/ chmod +x /usr/lib/zabbix/alertscripts/dingding-webhook.py # 添加执行权限 chown zabbix.zabbix /usr/lib/zabbix/alertscripts/dingding-webhook.py # 设置所有权 chown zabbix.zabbix /var/log/zabbix/zabbix_dingtalk.log # 日志文件所有权(如果使用日志) ``` 这确保了Zabbix服务账户(通常为`zabbix`用户)能正常执行脚本[^2]。 #### 步骤3: 在Zabbix Web界面配置媒体类型 登录Zabbix Web控制台(通常为`http://<zabbix_server_ip>/zabbix`): 1. **添加媒体类型**: - 导航到 **Administration** → **Media types** → **Create media type**。 - 填写名称(例如"DingTalk Alert")。 - 类型选择 **Script**。 - 在 **Script name** 中输入脚本文件名(例如`dingding-webhook.py`)。 - 在 **Script parameters** 中添加参数:`{ALERT.SUBJECT}` 和 `{ALERT.MESSAGE}`(确保顺序与脚本一致)。 - 保存设置。 #### 步骤4: 配置用户报警设置 为接收报警的用户添加媒体: 1. 导航到 **Administration** → **Users** → 选择用户(如Admin)→ **Media** tab → **Add**。 2. 选择媒体类型为刚创建的"DingTalk Alert"。 3. 设置发送选项(例如:启用状态、报警时间段)。 4. 保存设置。 #### 步骤5: 配置报警动作 定义触发报警时的动作: 1. 导航到 **Configuration** → **Actions** → **Create action**。 2. **Action** tab:填写名称(如"DingTalk Notification"),设置触发条件(例如:触发器状态=Problem)。 3. **Operations** tab:添加操作: - 选择 **Send to users** 并指定用户。 - 在 **Operations details** 中,选择媒体类型为"DingTalk Alert"。 - 使用宏变量自定义消息(可选):在 **Default message** 中,可包含`{ALERT.SUBJECT}`和`{ALERT.MESSAGE}`以传递详细信息[^3]。 4. 保存动作。 #### 步骤6: 测试和验证 1. 手动触发一个测试报警(例如:创建一个测试触发器)。 2. 检查钉钉群消息是否收到通知。 3. 查看脚本日志:`tail -f /var/log/zabbix/zabbix_dingtalk.log`(如果脚本中启用了日志)。 4. 如果失败,检查Zabbix服务器日志:`tail -f /var/log/zabbix/zabbix_server.log`。 **常见问题解决**: - **报警未发送**:确保钉钉Webhook URL正确,且机器人未被禁用。 - **权限错误**:运行`chown zabbix.zabbix`修复文件所有权[^2]。 - **宏变量未解析**:在动作配置中正确使用`{ALERT.SUBJECT}`和`{ALERT.MESSAGE}`[^3]。 通过以上步骤,Zabbix即可实现钉钉报警通知。配置基于Linux环境(如CentOS/Ubuntu),其他系统需调整路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值