你是不是经常遇到这种情况?一个数据库备份或者查询任务,跑起来没完没了,等你发现时,业务已经受到影响了。别担心,今天我就分享一个我亲自验证过的高效方法:用 Apache DolphinScheduler 设置执行超时告警,时间一到,信息立刻推送到你的飞书(或钉钉/企业微信),让你时刻掌握任务动态!
核心思路很简单:让调度器替你“盯梢”,一旦任务超过预设时间,马上通知你。这就像给你的后台任务装了一个智能闹钟。
为了复现我的操作,你需要备齐以下几点:
想让告警生效,你得先确认插件都装对了。以下是必须启用的插件清单:
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表的请求都会被阻塞住,正好用来测试我们的超时告警。
登录 DolphinScheduler 控制台,先在数据源中心创建一个 MySQL 数据源,连接到我们刚刚建表的数据库。
接下来是核心步骤!创建一个 SQL 任务,执行的语句就写一条简单的查询,比如 SELECT * FROM actor;。
关键点在任务的高级设置里:
这里有一张我设置时的截图,你可以对照着看:

点击运行任务!这里有个超级重要的细节:在弹窗的“通知策略”里,不能选择“都不发”。至少需要勾选“成功发”或“失败发”其中一项,告警链路才会被启用。
任务启动后,因为表被锁着,查询会一直等待。等到 1 分钟过后……叮!你的飞书机器人就会准时给你发来消息,告诉你任务已经超时。
来看下我收到的告警消息效果:

是不是很简单?这样一来,任何长时间运行的任务都逃不过你的眼睛。
希望这个分享对你有用!如果你在配置过程中遇到任何问题,或者有更好的玩法,欢迎在评论区一起交流讨论。让你的运维工作,因为一个小设置而变得更省心、更智能!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70014275/viewspace-3173076/ ,如需转载,请注明出处,否则将追究法律责任。