zabbix发送告警消息到钉钉群

  1. 先在钉钉群中添加群机器人,把webhook复制备用:
    钉钉机器人

  2. 找一下zabbix server上定义的告警脚本存放路径:

[root@0f3c27f24c08 ~]# grep alertscripts /etc/zabbix/zabbix_server.conf 
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
  1. 在/usr/lib/zabbix/alertscripts目录中创建ding.py,内容如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
#api_url后跟告警机器人的webhook
api_url = "https://oapi.dingtalk.com/robot/send?access_token=*********************"
def msg(text):
   json_text= {
    "msgtype": "text",
    "text": {
        "content": text
    }
   }
   print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
if __name__ == '__main__':
   text = sys.argv[1]
   msg(text)
<think>首先,用户的问题是关于配置Zabbix以通过钉钉群组机器人发送告警通知。用户引用了几个参考,这些是关于Zabbix钉钉集成的信息。 关键点: - 用户想配置Zabbix使用钉钉机器人发送告警。 - 引用的内容提供了关于安装依赖、创建媒体类型、配置动作等的步骤。 我的回答需要: - 使用中文。 - 结构清晰,逐步解决问题。 - 确保真实可靠(基于提供的引用)。 - 在行内数学表达式使用$...$,独立公式使用$$...$$(但这个问题可能不涉及数学公式,所以可能不需要)。 - 生成相关问题。 - 在引用段落末尾添引用标识,如[^1]。 步骤: 1. **理解需求**:用户要配置Zabbix发送告警钉钉群。 2. **参考引用**: - [^1]: 提到在Docker部署的Zabbix中安装requests模块,创建媒体类型动作。 - [^2]: 提供消息模板。 - [^3]: 提到使用一个脚本。 - [^4]: 解释钉钉机器人。 - [^5]: 提供钉钉告警脚本的Python代码。 3. **结构化回答**: - 介绍步骤。 - 确保清晰:安装依赖、创建钉钉机器人、配置Zabbix媒体类型、配置动作。 - 使用代码块展示脚本。 - 添引用标识。 4. **生成相关问题**:在回答结束时,列出相关问题。 回答大纲: - **步骤1: 准备环境** - 如果使用Docker,确保安装requests模块(如引用[^1])。 - **步骤2: 创建钉钉群机器人** - 在钉钉群中添机器人,获取Webhook URL。 - **步骤3: 创建报警脚本** - 编写Python脚本发送消息钉钉(如引用[^5])。 - **步骤4: 配置Zabbix媒体类型** - 在Zabbix中创建新的媒体类型,指向脚本。 - **步骤5: 配置动作** - 创建动作,使用消息模板(如引用[^2])。 - **步骤6: 测试** - 停止一个agent来测试告警。 - **生成相关问题** 确保语言自然、专业。</think>### 配置Zabbix通过钉钉群组机器人发送告警通知 要将Zabbix配置为通过钉钉群组机器人发送告警通知,需要完成以下步骤。本指南基于Zabbix官方文档常见实践,确保操作可靠。配置过程包括环境准备、创建钉钉机器人、编写告警脚本、设置Zabbix媒体类型动作等。以下是详细步骤(假设Zabbix已部署,如使用Docker,需额外处理依赖)。 #### 步骤1: 准备环境(确保Pythonrequests模块可用) - 如果Zabbix部署在Docker容器中(如官方镜像`zabbix-server-mysql`),需进入容器安装Python的requests模块,因为钉钉脚本依赖此模块。执行以下命令: ```bash docker exec -it <容器名称> bash # 进入容器 yum -y install epel-release # 安装EPEL源 yum -y install python-pip # 安装pip pip --no-cache-dir install requests # 安装requests模块 yum clean all # 清理缓存 ``` 完成后退回主机环境。此步骤确保脚本能发送HTTP请求到钉钉API[^1]。 #### 步骤2: 创建钉钉群组机器人 1. 在钉钉群组中,点击“群设置” > “智能群助手” > “添机器人”。 2. 选择“自定义机器人”,设置名称(如“Zabbix告警”),并获取Webhook URL(格式如`https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN`)。保存此URL,后续脚本需要它[^4]。 3. 可选:配置安全设置(如IP白名单或关键词),确保仅Zabbix服务器能发送消息。 #### 步骤3: 编写告警脚本 在Zabbix服务器上创建Python脚本(如`/usr/lib/zabbix/alertscripts/dingding.py`),用于发送消息钉钉。脚本内容基于引用[^5],替换`api_url`为你的Webhook URL: ```python #!/usr/bin/python # -*- coding: utf-8 -*- import requests import json import sys import os headers = {'Content-Type': 'application/json;charset=utf-8'} api_url = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN" # 替换为你的token def msg(text): json_text = { "msgtype": "text", "text": { "content": text }, } response = requests.post(api_url, json.dumps(json_text), headers=headers) print(response.content) if __name__ == '__main__': text = sys.argv[1] # Zabbix传递告警消息作为参数 msg(text) ``` - 保存后,赋予脚本执行权限:`chmod +x /usr/lib/zabbix/alertscripts/dingding.py`。 - 测试脚本:运行`./dingding.py "测试消息"`,检查钉钉群是否收到消息[^3]。 #### 步骤4: 配置Zabbix媒体类型 1. 登录Zabbix Web界面,导航到“管理” > “报警媒介类型” > “创建媒体类型”。 2. 设置名称(如“钉钉机器人”),类型选择“脚本”。 3. 在“脚本名称”字段输入脚本文件名(如`dingding.py`)。 4. 在“脚本参数”中添`{ALERT.MESSAGE}`,这样Zabbix会将告警消息传递给脚本。 5. 保存设置。此步骤定义告警发送渠道[^1]。 #### 步骤5: 配置动作消息模板 1. **创建动作**:导航到“配置” > “动作” > “事件源触发器” > “创建动作”。 - 名称:如“钉钉告警动作”。 - 条件:设置触发器条件(如“触发器严重性 >= 警告”)。 - 操作:在“操作”标页,添新操作: - 发送到用户:选择接收告警的用户或群组(确保用户已配置钉钉媒体)。 - 仅送到:选择“钉钉机器人”(步骤4创建的媒体类型)。 - 消息:粘贴告警消息模板(见下文)。 2. **消息模板**:使用以下模板,基于引用[^2]优化: ``` 告警主机:{HOST.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 当前状态:{TRIGGER.STATUS} 事件ID:{EVENT.ID} 告警项目:{ITEM.NAME} 告警值:{ITEM.VALUE} 问题详情:{ITEM.DESCRIPTION} ``` 此模板自动填充Zabbix宏,提供详细告警上下文[^2]。 3. 保存动作。 #### 步骤6: 测试配置 - 模拟告警:停止一个Zabbix agent(如`systemctl stop zabbix-agent`),触发问题。 - 检查钉钉群:应收到类似消息: ``` 告警主机:server1 告警时间:2023-10-05 14:30 告警等级:警告 告警信息:Zabbix agent on {HOST.NAME} is unreachable 当前状态:PROBLEM ... ``` - 问题解决后,Zabbix会自动发送恢复消息(状态变为“OK”)[^1]。 #### 常见问题排查 - **脚本失败**:检查Python路径(`#!/usr/bin/python`)权限;确保requests模块安装正确。 - **无消息接收**:验证Webhook URL钉钉安全设置;检查Zabbix动作条件是否匹配。 - **性能建议**:对于高负载环境,使用钉钉机器人的“安全选项或限流设置。 此配置基于标准实践,确保告警实时可靠。如需更多细节,参考Zabbix官方文档或钉钉机器人指南[^4][^5]。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值