别再让慢查询偷偷吃掉你的时间!用DolphinScheduler轻松搞定超时告警

你是不是经常遇到这种情况?一个数据库备份或者查询任务,跑起来没完没了,等你发现时,业务已经受到影响了。别担心,今天我就分享一个我亲自验证过的高效方法:用 Apache DolphinScheduler 设置执行超时告警,时间一到,信息立刻推送到你的飞书(或钉钉/企业微信),让你时刻掌握任务动态!

核心思路很简单:让调度器替你“盯梢”,一旦任务超过预设时间,马上通知你。这就像给你的后台任务装了一个智能闹钟。

你需要准备的环境

为了复现我的操作,你需要备齐以下几点:

  • Apache DolphinScheduler 3.4.1(这是我使用的版本)
  • MySQL 5.7(作为演示的数据源)
  • 确保 DolphinScheduler 已安装必要的插件(下面会列出)

DolphinScheduler关键配置

想让告警生效,你得先确认插件都装对了。以下是必须启用的插件清单:

--alert-plugins--
dolphinscheduler-alert-feishu
--end--
--task-plugins--
dolphinscheduler-task-sql
--end--
--datasource-plugins--
dolphinscheduler-datasource-mysql
--end--

另外,别忘了准备好 MySQL 的 JDBC 驱动 jar 包。

模拟一个“慢查询”场景

为了演示超时告警,我们需要在数据库里创造一个会“卡住”的任务。这里我创建一个简单的表,然后给它加锁。

第一步,建表(任何表都可以):

CREATE TABLE `actor` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
 PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4;

第二步,锁表(让查询超时):

LOCK TABLES actor WRITE;

执行这条命令后,任何尝试写入或读取actor表的请求都会被阻塞住,正好用来测试我们的超时告警。

实操:开启你的“智能盯梢”

  1. 配置数据源

登录 DolphinScheduler 控制台,先在数据源中心创建一个 MySQL 数据源,连接到我们刚刚建表的数据库。

  1. 设置飞书告警通道
  • 创建告警实例:在“告警实例管理”中,插件选择 Feishu,填入你的飞书机器人Webhook地址。
  • 创建告警组:在“告警组管理”中,新建一个组,并把上一步创建的飞书告警实例加进来。
  1. 创建 SQL 任务并绑定超时规则

接下来是核心步骤!创建一个 SQL 任务,执行的语句就写一条简单的查询,比如 SELECT * FROM actor;。

关键点在任务的高级设置里:

  • 找到“超时时间”设置项,把它勾选上,并设置为1分钟。
  • 在“超时策略”下拉菜单中,选择“超时告警”或者“超时失败”,这样任务超时后就会触发我们配置好的告警流程。

这里有一张我设置时的截图,你可以对照着看:

  1. 运行任务,坐等告警

点击运行任务!这里有个超级重要的细节:在弹窗的“通知策略”里,不能选择“都不发”。至少需要勾选“成功发”或“失败发”其中一项,告警链路才会被启用。

任务启动后,因为表被锁着,查询会一直等待。等到 1 分钟过后……叮!你的飞书机器人就会准时给你发来消息,告诉你任务已经超时。

来看下我收到的告警消息效果:

是不是很简单?这样一来,任何长时间运行的任务都逃不过你的眼睛。

我的经验总结与提醒

  • 超时时间要根据任务类型合理设置,备份任务可以长一些,关键查询可以短一些。
  • 除了飞书,告警插件也支持钉钉、企业微信等,配置逻辑类似。
  • 这个功能特别适合用于监控那些“说不准要跑多久”的任务,比如数据同步、复杂报表生成等,能帮你提前发现潜在的性能瓶颈。

希望这个分享对你有用!如果你在配置过程中遇到任何问题,或者有更好的玩法,欢迎在评论区一起交流讨论。让你的运维工作,因为一个小设置而变得更省心、更智能!

posted @ 2026-06-04 16:23  海豚调度  阅读(24)  评论(0)    收藏  举报