zabbix配置钉钉告警(附含钉钉告警脚本 · 实战亲测无任何问题)

该文介绍了如何配置钉钉群来接收Zabbix的监控告警,包括创建钉钉群,添加自定义机器人,设置webhook,以及在服务器端编写Python脚本来发送告警信息。同时,文章还展示了在Zabbix中创建报警媒介类型和动作,以实现自动发送告警和恢复通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🍁博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!

钉钉上操作(钉钉告警以关键词方式告警)

创建钉钉群

  • 登录钉钉
  • 创建钉钉群

手机、电脑都可以,这里以电脑举例

在这里插入图片描述

这里可以自己随便选择,我选择的是内部群

在这里插入图片描述

邀请好友,起一个群名称就可以了;

在这里插入图片描述

创建完成。

添加机器人–>设置关键词

创建完成之后点击群设置

在这里插入图片描述

往下翻找到“机器人”

在这里插入图片描述

点击添加机器人

在这里插入图片描述

添加”机器人“–>“自定义”

在这里插入图片描述

点击添加

在这里插入图片描述

在这里插入图片描述

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

请保管好webhook的值;后面需要用到。

在这里插入图片描述

在这里插入图片描述

服务器上操作

  • 配置钉钉脚本

安装python或者python3教程可参考:Linux下安装Python3.6.8(超级详细)【Linux】中安装pip(详细教程)

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

##安装python或者python3
[root@zabbix alertscripts]# yum install python3
 
[root@zabbix alertscripts]# vim dingding.py

注意:这里需要提前安装好这几个python模块:requests、json、sys、os、datetime
安装方式为:pip3 install requests 以此类推;
如遇到以下报错就是没有安装requests模块,就需要pip安装一下;

在这里插入图片描述

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=237132311231w4ru3rweehfiuqeor21o34u1923412werqwrq223"
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/alertscripts/log/dingding.log"):
        f=open("/usr/lib/zabbix/alertscripts/log/dingding.log","a+")
else:
        f=open("/usr/lib/zabbix/alertscripts/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()

在这里插入图片描述

#为脚本添加执行权限
[root@zabbix alertscripts]# chmod +x dingding.py
 
#修改脚本的属主和属组:
[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
  • 创建日志文件:
[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/
  • 测试脚本是否能运行成功:

注意关键词;

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

手机号写的正确的话就可以直接@他,如果随便写的就不会输出,如下图的上(正确手机号)、下(错误手机号)

在这里插入图片描述

成功接收到信息,完成!

web页面操作

  • 管理–>报警媒介类型–>创建媒体类型

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

  • 配置–>动作–>创建动作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

操作添加:

在这里插入图片描述

恢复操作添加:

在这里插入图片描述

在这里插入图片描述

  • 个人中心–>报警媒介–>添加

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

钉钉接收告警信息测试

自己设置好服务器的监控项触发器,让他告警;

在这里插入图片描述

成功收到,完成!!!

<think>好的,我需要帮助用户了解如何配置和实现InfluxDB的告警功能。根据用户提供的引用内容,我需要结合这些信息来构建一个清晰的步骤指南。首先,用户提到的引用[1]提到了InfluxDB的下载和安装步骤,这可能涉及到安装和启动InfluxDB,这是配置告警的前提条件。接下来,引用[4]提到了使用Kapacitor来定义脚本任务,包括定义任务、查看任务列表和内容,以及编写告警脚本,这应该涉及到Kapacitor的安装和配置,因为Kapacitor是InfluxDB的告警和事件处理组件。然后,引用[2]和[3]提到了与第三方平台(如睿象云和Alertmanager)的集成,这可能涉及到如何将InfluxDB的告警通知发送到外部系统或通知具体的人员。 首先,我需要确保用户已经正确安装并启动了InfluxDB,这是基础。然后,安装Kapacitor,因为告警功能主要通过它来实现。Kapacitor需要连接到InfluxDB,所以需要配置Kapacitor的配置文件,指定InfluxDB的地址和端口。接下来,用户需要编写TICKscript脚本,这是Kapacitor用来定义告警规则的脚本语言。例如,当某个指标超过阈值时触发告警。然后,定义和启用这个任务,使用Kapacitor的命令行工具来加载脚本并启动任务。之后,告警是否正常工作,可以通过插入试数据来触发告警,查看日志确认。最后,如果需要集成到第三方平台,比如睿象云或Alertmanager,可能需要配置webhook或者使用Kapacitor的HTTP输出将告警信息发送到指定API。 需要注意的是,用户提供的引用[2]提到TICK_TEST API接收到报警信息后通知到具体的人,这可能涉及到在TICKscript中设置HTTP POST请求到API端点。而引用[4]中的脚本任务定义和查看命令也是关键步骤。此外,引用[3]提到Prometheus使用Alertmanager进行告警通知,但InfluxDB的告警主要通过Kapacitor处理,可能需要结合两者,或者用户可能需要了解不同的监控系统中的告警配置。 可能还需要考虑如何持久化告警状态,或者处理重复告警问题,但根据现有引用,可能不需要深入这些细节。用户的主要需求是配置InfluxDB的告警功能,所以重点放在Kapacitor的使用和集成第三方通知方式上。 总结步骤应该是: 1. 安装InfluxDB并启动。 2. 安装和配置Kapacitor,确保其连接到InfluxDB。 3. 编写TICKscript定义告警规则。 4. 定义并启用Kapacitor任务。 5. 告警触发。 6. 配置通知方式,如调用API或集成第三方服务。 需要检查每个步骤对应的引用是否正确应用,并确保命令和配置示例准确。例如,引用[1]中的解压命令可能需要用户将InfluxDB安装到指定目录,而引用[4]中的Kapacitor命令需要正确使用define和list tasks等。此外,用户可能需要知道如何编写具体的TICKscript,比如检查CPU使用率是否超过阈值,然后触发HTTP请求到通知API,如引用[2]中的TICK_TEST API。 在回答时,要结构清晰,分步骤说明,并引用对应的引用来源。例如,在步骤1中引用[1],步骤4中引用[4],步骤6中引用[2]和[3]等。同时,需要确保用户了解每个步骤的作用,以及如何验证配置是否成功。可能还需要提醒用户检查服务是否运行正常,配置文件的正确性,以及权限问题等常见问题。 最后,生成相关问题,帮助用户进一步学习,比如如何优化告警规则,如何与其他监控系统集成等。</think>### 分步配置InfluxDB告警功能的方法 #### 1. 安装InfluxDB与Kapacitor - **InfluxDB安装** 下载并解压InfluxDB(版本1.3.6): ```bash wget https://dl.influxdata.com/influxdb/releases/influxdb-1.3.6_linux_amd64.tar.gz tar -zxvf influxdb-1.3.6_linux_amd64.tar.gz -C /home/influxdb ``` 启动服务后,确保数据库可正常写入和查询数据[^1]。 - **Kapacitor安装** Kapacitor是InfluxDB的告警处理组件,需单独安装并配置: ```bash wget https://dl.influxdata.com/kapacitor/releases/kapacitor-1.5.2_linux_amd64.tar.gz tar -zxvf kapacitor-1.5.2_linux_amd64.tar.gz -C /home/kapacitor ``` 修改配置文件 `kapacitor.conf`,指定InfluxDB地址: ```toml [[influxdb]] enabled = true urls = ["http://localhost:8086"] ``` --- #### 2. 编写TICKscript告警脚本 TICKscript是Kapacitor定义告警规则的语言。 **示例:检CPU使用率超过80%时触发告警** ```javascript // 保存为 cpu_alert.tick dbrp "telegraf"."autogen" stream |from() .measurement('cpu') .groupBy('host') |alert() .crit(lambda: "usage_idle" < 20) .message('{{ .Level }}: CPU使用率过高!主机: {{ index .Tags "host" }}') .post('http://api.tick_test/notify') // 替换为实际告警API ``` --- #### 3. 定义并启用告警任务 - **加载脚本** ```bash kapacitor define cpu_alert -tick cpu_alert.tick ``` - **启用任务** ```bash kapacitor enable cpu_alert ``` - **验证任务状态** ```bash kapacitor list tasks # 查看任务列表 kapacitor show cpu_alert # 查看任务详情 ``` 任务状态应为 `enabled`[^4]。 --- #### 4. 告警触发 - **写入试数据** 使用InfluxDB命令行插入模拟数据: ```sql INSERT cpu,host=server01 usage_idle=15 ``` - **查看告警日志** ```bash tail -f /var/log/kapacitor/kapacitor.log ``` 日志中应显示告警触发记录。 --- #### 5. 集成第三方通知(如睿象云或Alertmanager) - **通过API发送通知** 在TICKscript中配置`.post()`方法调用外部API(如睿象云),示例: ```javascript .post('https://api.aiops.com/alert') .header('Authorization', 'Bearer YOUR_TOKEN') ``` 收到告警后,API需解析数据并通知相关人员[^2]。 - **与Prometheus Alertmanager联动** 若需将告警转发至Alertmanager,需在Kapacitor中配置HTTP输出,并在Alertmanager中定义路由规则[^3]。 --- ###
评论 50
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A-刘晨阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值