任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载本指南以 Apache DolphinScheduler 告警插件体系中的ScriptShell 脚本插件为核心讲解如何在告警实例管理中创建脚本告警实例、配置脚本路径与自定义参数并结合仓库源码剖析脚本执行器ScriptSender的完整调用链、命令行参数约定与命令注入防护机制。读完本文你将掌握用 Shell 脚本接入任意自定义告警通道如自研通知系统、企业内部 IM、监控平台 Webhook 等的完整实战方案。一、Script 插件能做什么在 DolphinScheduler 中告警是任务流运行状态成功 / 失败触发的下游动作。内置的 告警插件目录 覆盖了 DingTalk、企业微信、飞书、邮件、HTTP 等常见通道但真实生产环境往往存在内置插件覆盖不到的自定义通知渠道。Script 插件正是为这类场景设计的万能出口把告警标题与内容作为命令行参数交给用户指定的 Shell 脚本处理脚本内可以自由对接内部短信网关、自研 IM、工单系统、监控平台 API 等任意服务通过脚本的退出码exit code反馈告警发送是否成功进而决定该条告警记录的最终状态。从源码结构看Script 插件位于 dolphinscheduler-alert-script 模块核心实现由ScriptAlertChannelFactory插件工厂、ScriptAlertChannel告警通道、ScriptSender脚本执行器、ProcessUtils进程工具、StreamGobbler输出流消费线程和ScriptType脚本类型枚举六个类构成。二、创建告警实例配置步骤与字段说明如需使用Shell脚本进行告警请在告警实例管理中创建告警实例并选择Script插件。以下为Script的配置示例2.1 参数配置表参数说明用户参数User Params用户自定义的参数将作为-p参数传入脚本执行非必填脚本路径Script Path脚本在服务器上的文件位置只支持.sh后缀的文件必填脚本类型Type目前支持Shell脚本单选默认且仅提供SHELL选项必填从 ScriptAlertChannelFactory.java 可以看出三个字段在代码侧的完整定义userParamsInputParam类型requiredfalse占位提示为 Customized Params允许留空pathInputParam类型requiredtrue源码注释明确说明需要校验文件类型与文件是否存在typeRadioParam单选参数目前唯一可选项来自 ScriptType.java 枚举中的SHELL(0, SHELL)。三个字段的配置键名定义在 ScriptParamsConstants.java 中分别是type、path、userParams它们在执行期会被组装进参数 Map 传给ScriptSender。2.2 告警实例的完整填写项参照配置界面截图一个完整的告警实例通常还包含以下通用字段与插件参数配合使用告警实例名称Alarm instance name必填为该实例起一个可辨识的名称如script001选择插件Select plugin必填选中Script告警类型Warning Type必填单选success/failure/all决定任务成功、失败或全部情况下触发该脚本告警用户参数User Params可选按脚本约定格式填写例如--toadminexample.com --subjectDolphinScheduler Alert脚本路径Script Path必填填写服务器上可执行脚本的绝对路径例如/home/script.sh脚本类型Type必填选中SHELL。2.3 注意事项请注意脚本的读写权限与执行租户的关系。脚本告警实际运行在 Alert Server 所在宿主机上以执行告警的租户身份调用/bin/sh因此必须保证脚本文件对该执行用户具备可读必要时可执行权限脚本内部需要读写的外部文件、日志目录、凭据文件等同样要授予对应租户合理的访问权限若脚本需要调用外部命令或网络接口需确认执行环境PATH、代理、DNS对该租户可用。三、脚本的执行约定命令行参数与退出码3.1 参数传递协议从 ScriptSender.java 可以看到插件实际构造的命令为/bin/sh -c scriptPath -t title -c content -p userParams即脚本固定接收三个短参数参数含义-t告警标题title来自告警数据-c告警内容content来自告警数据-p用户自定义参数userParams来自告警实例配置仓库自带的示例脚本 scriptExample.sh 演示了标准的参数解析骨架可作为编写自有脚本的模板#!/bin/bash while getopts t:c:p: opts; do case $opts in t) t$OPTARG ;; c) c$OPTARG ;; p) p$OPTARG ;; ?) ;; esac done # Write your specific logic here # Set the exit code according to your execution result, and alert needs to use it # to judge the status of this alarm result if [ $t error msg title ]; then exit 12 fi exit 03.2 退出码决定告警结果ScriptSender在脚本执行完毕后读取进程退出码退出码为0告警发送成功返回send script alert msg success退出码非0告警发送失败返回send script alert msg error,exitCode is n。因此脚本必须在结尾exit 0发送成功或exit 非 0发送失败之间做出明确选择DolphinScheduler 会依据该结果更新告警记录状态并在告警实例测试中给出直观反馈。3.3 进程执行与输出流处理脚本通过 ProcessUtils.java 中的ProcessBuilder启动子进程并调用process.waitFor()同步等待脚本结束。为防止脚本输出内容过多导致标准输出 / 错误流的管道缓冲区阻塞ProcessUtils会为输入流和错误流分别启动一个 StreamGobbler.java 线程持续消费并打印到告警服务日志从而避免死锁、保证等待超时可控。脚本自身的 stdout/stderr 不会直接作为告警结果返回排查问题时请关注 Alert Server 日志中的out put msg is ...输出。四、执行链路与校验逻辑从触发到结果一次脚本告警的完整调用链如下告警触发后ScriptAlertChannel.process(AlertInfo)被调用。该入口位于 ScriptAlertChannel.java若参数 Map 为空会直接返回script params is empty的失败结果参数 Map 被封装为ScriptSender调用sendScriptAlert(title, content)sendScriptAlert首先校验scriptType是否为SHELL其余类型会返回script type error源码注释预留了可以在这里扩展 python 等其他脚本类型的扩展点进入executeShellScript后按顺序执行以下校验见 ScriptSender.java操作系统校验Windows 环境直接返回shell script not support windows os即该插件仅支持类 Unix 环境后缀校验脚本路径必须以.sh结尾否则返回shell script is invalid, only support .sh file存在性校验文件必须存在否则返回shell script not exist : path类型校验路径必须是普通文件而非目录否则返回shell script is not a file : path注入防护校验详见下一节构造/bin/sh -c命令并执行依据退出码返回成功 / 失败结果。五、安全设计命令注入RCE防护由于脚本告警的本质是把外部文本拼入 shell 命令执行若不加约束极易产生命令注入漏洞。ScriptSender在构造命令前对标题、内容、用户参数三部分统一执行了单引号黑名单校验见 ScriptSender.javaif (userParams.contains()) { log.error(shell script illegal user params : {}, userParams); ... } if (title.contains()) { ... } if (content.contains()) { ... }任一输入包含单引号插件都会拒绝执行并记录shell script illegal ...日志。单引号是 shell 拼接场景下逃逸出参数边界的核心字符拦截它即可阻断形如; rm -rf /; 的注入载荷。这一点在单元测试 ScriptSenderTest.java 中有直接验证testScriptSenderInjectionTest将用户参数设置为 ; calc.exe ; 断言告警结果必然失败。同文件中的其他测试用例还覆盖了正常发送成功 / 失败对应脚本示例中error msg title的分支、用户参数为null时仍可成功空参数不触发注入拦截、路径为null或指向非.sh文件时失败等边界场景可作为理解插件行为边界的参考。六、常见问题排查清单现象可能原因排查建议告警结果提示shell script not exist脚本路径填写错误或文件被删除在 Alert Server 所在机器上确认路径存在告警结果提示only support .sh file路径后缀不是.sh重命名为.sh后缀的脚本文件告警结果提示shell script illegal ...标题 / 内容 / 用户参数中包含单引号在脚本内改用双引号或转义方式处理含引号内容告警结果提示shell script not support windows os在 Windows 上运行 Alert Server将脚本告警部署到 Linux 环境脚本明明执行成功但告警仍失败脚本未以exit 0结束检查脚本尾部退出码脚本输出丢失输出仅写入 Alert Server 日志检索日志中out put msg is关键字脚本访问文件 / 网络被拒绝执行租户权限不足核对脚本读写权限与执行租户关系见 2.3 节七、与告警插件体系的衔接Script 插件是 DolphinScheduler 告警插件架构 中的一员。插件工厂通过AutoService(AlertChannelFactory.class)注解见 ScriptAlertChannelFactory.java实现 SPI 自动注册插件名固定为Script。告警实例创建后其配置会被持久化并在每次触发时随AlertInfo传入process()方法。若要进一步了解如何在告警实例管理中选择插件、配置告警组与测试告警可参考 告警插件用户指南中文版见 告警插件用户指南。综上Script 插件通过参数注入 退出码约定这一极简协议为 DolphinScheduler 提供了对接任意自定义通知系统的能力。在实际使用中只需按本文给出的参数协议编写脚本、配置好路径与租户权限即可将告警能力无缝扩展到内部业务系统。赞分享任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载相关推荐Apache DolphinScheduler Script 脚本告警插件配置、执行原理与安全实践Apache DolphinScheduler Script 脚本告警插件配置、执行原理与安全实践 本文基于 Apache DolphinScheduler任务调度数据编排工作流自动化后端大数据Apache DolphinScheduler Script 告警插件基于 Shell 脚本的自定义告警通道配置与实现原理Apache DolphinScheduler Script 告警插件基于 Shell 脚本的自定义告警通道配置与实现原理 导读 当内置的邮件、钉钉、飞书等告任务调度大数据后端前端Apache DolphinScheduler Script 告警插件实战用 Shell 脚本接管告警通知Apache DolphinScheduler Script 告警插件实战用 Shell 脚本接管告警通知 Script 告警插件是 Apache Dolph任务调度数据编排工作流自动化后端大数据创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
RCB稳健波束形成:对角加载原理、零陷形成与Python实现 简介:这份资源面向无线通信、雷达与阵列信号处理方向的学习者与研究人员,聚焦RCB稳健波束形成这一进阶主题,帮助解决信源方向估计误差、阵元相位误差及运动干扰等非理想条件下的波束稳健性问题。内容围绕RCB算法、对角加载、稳健波束、零陷干… · 2026/9/23 21:39:59
大文件下载失败 下载了一个249GB的文件,通过wget、RaySync、百度网盘均正常下载,但是验证校验码错误。
尝试下载3GB的文件,正常。
尝试下载33GB的文件,同样出问题。
更换电脑,可正常下载所有文件。
文件从服务器下载到本地,… · 2026/9/23 21:39:59
RecRecNet广角图像畸变矫正:端到端可微网格变换与细节重建实战解析 简介:基于RecRecNet算法的广角图像畸变矫正Python项目,提供完整源码、预训练模型与训练代码,面向计算机视觉相关专业的毕设、课程设计及工程入门人群。项目已稳定运行验证,可直接复现或在理解原理后进行二次开发。包内共26个文件&… · 2026/9/23 22:20:48
YOLO火车轨道手推车数据集实战:从标签解析到训练避坑指南 简介:这份数据集面向YOLO系列目标检测算法开发者,专注于火车、轨道、手推车三类物体的检测任务,提供三千七百九十三张图像对应的完整标注。资源已经按照训练和验证需求划分好,并附带数据配置文件,可以直接用于主流YOLO… · 2026/9/23 22:20:48
10吨锅炉配多大的脱硫塔?风量、直径、高度怎么算 开篇结论:脱硫塔选多大,不是看感觉,是看两个数:烟气量定塔径,入口SO₂浓度定塔高和层数。1蒸吨锅炉约2500–3500 m/h烟气,10吨约25000–35000 m/h,参考塔径2.0–2.6米。浓度高就加喷淋层。1. 塔… · 2026/9/23 22:20:29
RedwoodJS 教程实战:从 Prisma 建模到 Service 测试,为博客添加完整评论功能 RedwoodJS 教程实战:从 Prisma 建模到 Service 测试,为博客添加完整评论功能 【免费下载链接】redwood RedwoodGraphQL 项目地址: https://gitcode.com/gh_mirrors/re/redwood
本篇技术指南以 RedwoodJS 官方教程第 6 章为核心,完整演… · 2026/9/23 22:20:17
脱硫塔和洗涤塔有什么区别?六种废气处理塔一张表分清 开篇结论:脱硫塔专治锅炉烟气SO₂,洗涤塔是通用主力;碱洗塔治酸性废气,酸洗塔治碱性废气,水洗塔洗可溶气体,喷淋塔是统称。六种废气塔分不清?一张表帮你选对。1. 六塔对比表名称原理主要处理对象… · 2026/9/23 22:20:04
旅游景点情感分析:细粒度属性级建模与BERT微调实践 简介:本资源是一套面向计算机专业本科生的毕业设计实战项目,聚焦旅游景点评论的细粒度情感分析任务,适用于Python Web开发、自然语言处理与数据库应用等课程实践或毕设选题参考。项目基于Django框架构建Web系统,集成RNCC情感分析模… · 2026/9/23 22:19:58
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29