首页/数据/数据工程与 ETL 速查/DolphinScheduler API 与自动化

DolphinScheduler API 与自动化

DolphinScheduler 提供 REST API:用账号换 token 后可查询工作流、触发或停止实例、维护定时,适合接入发布系统做自动化上线与巡检。

DolphinScheduler API 与自动化

DolphinScheduler 提供 REST API:先调用登录接口用账号换取 token,后续请求在请求头里携带 token,即可查询流程定义、启动或停止流程实例、查看实例与任务状态、维护定时。常见用途是把调度接入发布系统做自动化上线,或做批量巡检与对账脚本。要注意两点:接口路径与字段名在版本升级中会调整,自动化脚本要跟着改;token 有有效期,长期运行的自动化必须处理续期与失效重试。

基本信息

认证方式登录接口获取 token,请求头携带 token
常用能力查询流程定义、启动与停止实例、查实例与任务状态
典型用途发布流水线、批量巡检、对账脚本、定时批量维护
版本差异接口路径与字段名随版本调整,升级前对照官方 API 文档
安全要求token 放环境变量或密钥管理,不写进代码仓库

典型使用场景

  • 发布系统在部署完成后自动上线工作流并触发一次试跑
  • 批量巡检:定时查询所有流程实例状态,失败实例汇总通知
  • 按业务日期批量触发:对账任务按日期循环调用接口启动实例
  • 运维脚本:批量暂停或恢复定时,减少人工点击
  • 外部平台集成:把调度状态回写到发布系统或工单系统

获取 token 并触发实例

获取 token 并触发实例
# 登录换取 token(账号密码从环境变量读取)
TOKEN=$(curl -s -X POST "http://ds:12345/dolphinscheduler/login" \
  -d "userName=${DS_USER}&userPassword=${DS_PASS}" \
  | python -c "import sys,json;print(json.load(sys.stdin)['data']['token'])")

# 启动流程实例(参数名与路径以所部署版本的 API 文档为准)
curl -s -X POST "http://ds:12345/dolphinscheduler/projects/demo/executors/start-process-instance" \
  -H "token: $TOKEN" \
  -d "processDefinitionCode=123&failureStrategy=CONTINUE&execType=START_FAILURE_TASK_PROCESS"

# 查询实例状态:拿到状态字段后再决定是否重试或告警
curl -s "http://ds:12345/dolphinscheduler/projects/demo/process-instances/1" -H "token: $TOKEN"

常用调用与注意点

能力用途注意点
登录换 token后续请求的凭证token 有有效期,需处理续期
启动实例触发一次运行参数名随版本变化
查询实例状态巡检与判断成败状态枚举需按版本核对
停止实例异常时止损停止不等于数据回滚,需另行清理
维护定时批量上下线改完确认生效时间
token 放环境变量或密钥管理系统,不要写进脚本再提交到代码仓库:仓库里的历史记录很难彻底清理。
版本升级常伴随接口路径或字段调整,自动化脚本不会自己适配:升级前先在测试环境跑一遍自动化用例,再安排生产升级。
自动化触发实例时要带上幂等判断:发布重试或脚本重复执行时,同一业务日期不该生成两个实例,否则回刷会互相覆盖。

易错点

  • token 硬编码进脚本并提交到代码仓库,凭据泄漏且难以彻底清除
  • 版本升级后接口路径或字段变化,自动化在升级当天全部失败
  • token 过期未做续期处理,长期运行的巡检脚本静默停止工作
  • 重复触发同一业务日期实例,两个实例互相覆盖写入,数据结果不可预期

数据来源与参考

  • Apache DolphinScheduler 官方文档:API 文档(RESTful)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌