拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Apache DolphinScheduler 首页详解:任务/工作流状态统计与项目总览

Apache DolphinScheduler 首页详解任务/工作流状态统计与项目总览【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinschedulerApache DolphinScheduler 的首页是登录后默认展示的系统总览页面它聚合了当前用户可见的所有项目数据以「任务实例状态统计」「工作流实例状态统计」「工作流定义统计」三大模块帮助运维与开发人员快速观察整个调度系统的运行状态并由此深入各个进程、检查任务与任务日志。本文基于本仓库的首页中文文档并结合dolphinscheduler-api与dolphinscheduler-ui的源码实现完整解析首页的功能构成、统计口径、时间范围筛选原理以及如何通过 REST 接口复现首页统计能力。首页功能概述根据官方首页文档首页的核心价值在于Apache DolphinScheduler 首页可让您查看用户所有项目的任务实例状态统计、工作流实例状态统计和项目统计。这是观察整个系统状态以及深入各个进程以检查任务和任务日志的每个状态的最佳方式。需要特别说明的是这里的统计范围是当前登录用户可见的所有项目即用户拥有权限的全部项目而非仅限于某个单一项目。若需查看单个项目内的细化统计可进入具体项目下的「工作流/概览」页面其实现复用了与首页相同的数据分析接口见下文源码分析。从dolphinscheduler-ui的前端代码 views/home/index.tsx 可以看到首页主体由三张卡片构成呈「上两列 下一行」的布局卡片标题i18n key说明任务实例状态统计home.task_state_statistics饼图 明细表展示各状态下任务实例数量工作流实例状态统计home.workflow_state_statistics饼图 明细表展示各状态下工作流实例数量工作流定义统计home.workflow_definition_statistics柱状图展示各用户创建的工作流定义数量对应源码布局骨架views/home/index.tsx统计卡片组件views/home/components/state-card.tsx定义统计卡片组件views/home/components/definition-card.tsx任务实例状态统计展示内容「任务实例状态统计」卡片以饼图 数据表的双栏形式展示见 state-card.tsx左侧ECharts 饼图PieChart按状态展示任务实例数量占比右侧Naive UI 数据表NDataTable两列为状态state与数量number表头定义见 use-table.ts。状态名称取自国际化配置中文环境locales/zh_CN/home.ts下的任务状态标签包括提交成功、正在运行、准备暂停、暂停、准备停止、停止、失败、成功、需要容错、KILL、等待依赖完成、延时执行、强制成功、串行等待、派发、恢复容错。这些状态与任务执行生命周期一一对应使饼图与表格能够完整反映任务的调度、执行、等待与终态分布。数据请求链路任务状态数据由前端 use-task-state.ts 发起请求countTaskState({ startDate: format(date[0], yyyy-MM-dd HH:mm:ss), endDate: format(date[1], yyyy-MM-dd HH:mm:ss) })底层 HTTP 调用定义于 service/modules/projects-analysis/index.tsexport function countTaskState(params: StateReq): any { return axios({ url: /projects/analysis/task-state-count, method: get, params }) }即请求GET /projects/analysis/task-state-count可携带startDate、endDate两个时间参数均为yyyy-MM-dd HH:mm:ss格式字符串。该接口的后端实现位于 DataAnalysisController.java当不传projectCode时统计当前用户全部可见项目getAllTaskInstanceStateCount传入projectCode时则按单个项目统计getTaskInstanceStateCountByProject。返回结构体为 TaskInstanceCountVO.java包含totalCount任务实例总数taskInstanceStatusCounts按TaskExecutionStatus分组的计数列表。值得关注的是 TaskInstanceCountVO.of() 的实现它会遍历TaskExecutionStatus枚举的全部取值对查询结果中缺失的状态补零从而保证饼图与表格中每个状态都有对应的数据项不会出现状态缺失导致图表错位的问题。总数totalCount则通过对各组计数求和得到。工作流实例状态统计「工作流实例状态统计」卡片与任务统计卡片使用同一个StateCard组件交互与展示形式完全一致只是数据源不同。前端请求封装于 use-workflow-state.ts调用countWorkflowInstanceState({ startDate: format(date[0], yyyy-MM-dd HH:mm:ss), endDate: format(date[1], yyyy-MM-dd HH:mm:ss) })对应 HTTP 接口为GET /projects/analysis/workflow-state-count见 projects-analysis/index.ts后端控制器实现于 DataAnalysisController.java同样支持按projectCode精确到单个项目统计。返回体为 WorkflowInstanceCountVO其结构与任务统计一致totalCount表示工作流实例总数workflowInstanceStatusCounts为按工作流状态提交成功、正在运行、暂停、停止、成功、失败、KILL 等分组的计数列表。工作流定义统计第三张卡片「工作流定义统计」以柱状图形式展示横轴为用户名纵轴为对应的工作流定义数量用于直观判断各用户对工作流定义DAG的创建贡献。其实现见 definition-card.tsx仅当xAxisData与seriesData均非空时才渲染柱状图避免空数据时的空白图表。数据组装逻辑位于 use-workflow-definition.ts调用countDefinitionByUser({})将返回的userList拆分为用户名数组xAxisData与数量数组seriesData。对应接口为GET /projects/analysis/define-user-count见 projects-analysis/index.ts后端实现于 DataAnalysisController.java。同样地不传projectCode时统计当前用户可见的全部项目getAllWorkflowDefinitionCount传入时则统计指定项目getWorkflowDefinitionCountByProject返回按用户聚合的工作流定义计数列表。时间范围筛选与数据刷新机制首页的三张统计卡片中前两张状态统计卡片支持时间范围筛选。前端实现于 state-card.tsx卡片头部内置了一个 Naive UI 的NDatePicker类型为datetimerange日期时间范围并支持清空clearable。时间范围的选择逻辑集中在 index.tsx页面初始化时默认时间范围为今日零点至当前时刻[getTime(startOfToday()), Date.now()]startOfToday与getTime来自date-fns库切换时间范围后通过handleTaskDate/handleWorkflowDate重新调用对应的统计接口组件挂载onMounted以及语言环境切换watch(() locale.value)时都会重新拉取数据确保统计与国际化标签保持同步。时间参数在前端统一格式化为yyyy-MM-dd HH:mm:ss字符串后随 GET 请求发送后端据此进行过滤统计从而支持查看任意历史时间窗口内的任务与工作流状态分布。源码级实现小结功能模块前端组件/请求后端接口/projects/analysis/*返回 VO任务实例状态统计use-task-state.tstask-state-countDataAnalysisController.java#L72TaskInstanceCountVO.java工作流实例状态统计use-workflow-state.tsworkflow-state-countDataAnalysisController.java#L92WorkflowInstanceCountVO.java工作流定义统计use-workflow-definition.tsdefine-user-countDataAnalysisController.java#L110WorkflowDefinitionCountVO通用卡片组件state-card.tsx——从上表可以总结出首页的架构特点前端三个独立的数据 hook 分别消费后端三个统计分析接口共用一个通用卡片组件渲染且三个接口都遵循「不传projectCode统计全部可见项目、传入则按项目统计」的统一设计。这意味着同样的统计能力既服务于首页的全局限览也被项目级「概览」页面复用形成了一套可复用的调度系统数据分析 API。常见问题与使用建议首页统计的项目范围是什么首页统计的是当前登录用户拥有权限的全部项目数据而非整个系统所有用户的数据。若需查看指定项目的统计可调用对应的分析接口并传入projectCode参数。为什么首页默认只显示今天的数据首页初始时间范围为「今日零点 ~ 当前时间」可通过卡片右上角的时间选择器切换任意时间窗口查看历史某时段的实例状态分布。状态统计表为什么会出现计数为 0 的状态行这是后端 TaskInstanceCountVO 与WorkflowInstanceCountVO对缺失状态补零的结果目的是保证图表序列完整避免因某状态无数据导致饼图图例与表格行缺失。如何深入排查某个状态的实例首页只提供聚合统计如需查看具体实例明细与日志可从首页进入对应的「项目 → 工作流/任务实例」页面结合状态过滤条件定位问题实例并查看任务日志这正是首页定位「观察系统状态」、明细页面负责「深入检查」的职责分工。通过首页调度系统的整体运行状况可以一目了然任务与工作流的成功/失败/运行中等状态占比、各用户的工作流定义产出全部集中在一屏之内。结合本文给出的接口与源码路径你既可以快速读懂首页的统计逻辑也可以直接复用这些 REST 接口构建自定义的运维看板。【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门