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 放环境变量或密钥管理系统,不要写进脚本再提交到代码仓库:仓库里的历史记录很难彻底清理。
版本升级常伴随接口路径或字段调整,自动化脚本不会自己适配:升级前先在测试环境跑一遍自动化用例,再安排生产升级。
自动化触发实例时要带上幂等判断:发布重试或脚本重复执行时,同一业务日期不该生成两个实例,否则回刷会互相覆盖。