Apache DolphinScheduler 监控中心(Monitor)实战指南:服务健康巡检、命令统计与审计日志 Apache DolphinScheduler 监控中心Monitor实战指南服务健康巡检、命令统计与审计日志【免费下载链接】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 的监控中心Monitor是运维人员掌握集群健康状态的核心入口覆盖 Master/Worker/Alert 服务节点的存活与负载查看、底层数据库健康检查以及命令统计与审计日志两大辅助能力。本文基于docs/docs/en/guide/monitor.md展开并结合本仓库的 API 层、服务层与前端实现源码为你梳理监控中心每个功能的真实数据来源、调用链路与排查要点。读完本文你将能独立读懂监控中心每个页面的字段含义知道某个数字来自哪张表、哪个接口并能用 REST API 自行巡检 DolphinScheduler 集群。监控中心整体能力地图DolphinScheduler 的监控中心位于 Web UI 的监控中心菜单下整体分为两大块服务管理Service Management监控并展示系统中各服务Master Server、Worker Server、Alert Server的健康状态与基本信息同时提供数据库Database的健康检查统计管理Statistics Management包含命令统计Command 统计与失败命令统计和审计日志Audit Log两个子功能帮助掌握调度命令的积压情况与用户操作轨迹。从前后端调用链看监控中心的全部数据均来自 API 模块的 MonitorController.javaREST 路径前缀/monitor前端在 monitor/index.ts 中封装了对应的 axios 请求。掌握这张接口表就等于拿到了监控中心的遥控器方法路径说明对应页面GET/monitor/{nodeType}按节点类型获取服务列表MASTER / WORKER / ALERT_SERVER 等Master / Worker / Alert ServerGET/monitor/databases查询数据库健康状态DatabaseGET/monitor/masters/workflow-executors?masterAddresshost:port查询指定 Master 上正在运行的工作流实例仅管理员Master 运行工作流弹窗GET/monitor/workers/task-executors?serverAddresshost:port查询指定 Worker 上正在运行的任务实例仅管理员Worker 运行任务弹窗下面按页面维度逐一展开。服务管理四类健康检查的字段与原理服务管理是整个监控中心的主体它做的事情可以概括为通过注册中心Registry读取各服务节点的心跳信息并展示。Master Server 与 Worker Server从注册中心读取节点信息Master 与 Worker 页面分别展示当前集群中所有 Master / Worker 节点的信息。前端 use-master.ts 与 use-worker.ts 分别调用listMonitorServerNode(MASTER)与listMonitorServerNode(WORKER)最终命中GET /monitor/{nodeType}接口。在服务端MonitorServiceImpl.java 的实现非常直接Override public ListServer listServer(RegistryNodeType nodeType) { return registryClient.getServerList(nodeType); }也就是说节点列表并非查询业务数据库而是实时读取注册中心Registry支持 ZooKeeper / JDBC 等插件见 dolphinscheduler-registry中已注册的服务节点。返回的每个节点是一个 Server.java 模型核心字段如下host节点主机地址port节点服务端口serverDirectory节点在注册中心的目录路径heartBeatInfo心跳信息一般携带 CPU / 内存 / 负载等指标具体格式与各服务心跳实现相关lastHeartbeatTime最近一次心跳时间——这是判断节点是否存活的关键依据createTime节点注册时间。运维实践中如果某个节点长时间未更新lastHeartbeatTime基本可以判定该节点失联或宕机需要结合对应服务的日志排查。从源码结构看Master 页面的运行工作流实例弹窗running-workflows-modal.tsx会调用GET /monitor/masters/workflow-executors该接口在 MonitorServiceImpl 中通过Clients.withService(IWorkflowExecutorQueryClient.class).withHost(masterAddress)向指定 Master 发起 RPC 查询并校验当前用户必须是管理员ADMIN_USER否则抛出NO_CURRENT_OPERATING_PERMISSION。同理Worker 页面的运行任务实例弹窗调用GET /monitor/workers/task-executors在服务端经由 MonitorServiceImpl 向指定 Worker 发起 RPC 查询同样仅限管理员。这两个接口让你无需登录对应节点就能在界面上直观看到每个节点上正在跑什么工作流/任务是排查某节点负载异常、任务是否堆积的利器。Alert Server告警服务节点健康检查Alert Server 页面用于查看告警服务alert-server节点的运行状态前端代码位于 alert_server。其数据同样来自GET /monitor/{nodeType}nodeType 为告警服务对应的注册节点类型。当告警服务挂掉或注册异常时此处会直接体现从而避免告警服务本身挂了却没人知道的运维盲区。Database数据库健康检查Database 页面展示底层数据库的健康状态。其接口为GET /monitor/databases见 MonitorController.java服务端实现依赖 DAO 插件体系中的DatabaseMonitorOverride public ListDatabaseMetrics queryDatabaseState(User loginUser) { return Lists.newArrayList(databaseMonitor.getDatabaseMetrics()); }DatabaseMonitor位于 dolphinscheduler-dao-plugin 中dolphinscheduler-dao-api定义DatabaseMetrics模型不同数据库H2 / MySQL / PostgreSQL有各自的实现用于探测数据库连接与基本健康指标。该页面是判断调度系统元数据库是否正常的最直接入口——一旦数据库异常整个调度平台的读写都会受到影响。统计管理命令积压与失败命令的透视统计管理页面前端位于 statistics以 Tab 形式展示两类列表命令统计列表与失败命令统计列表。命令统计列表Command Statistics List该列表展示系统中当前的命令Command列表数据来自t_ds_command表。前端 use-statistics.ts 调用countCommandState()获取命令状态统计同时由 list-command-table.tsx 渲染列表。t_ds_command是 DolphinScheduler 调度引擎的指令队列Master 每消费一条命令就会执行一次对应的调度动作启动工作流、定时触发、补数等。从 Command.java 可以看到命令实体携带的命令类型、执行时间、依赖关系等关键字段。监控该表的意义在于命令积压量直接反映调度系统的处理压力。正常情况下命令会被 Master 快速消费如果某个时刻命令数量持续高位通常意味着 Master 处理能力不足或下游任务阻塞是重要的调度健康信号。失败命令统计列表Failure Command Statistics List失败命令统计列表展示系统中的失败命令数据来自t_ds_error_command表由 list-error-command-table.tsx 渲染实体模型见 ErrorCommand.java。t_ds_error_command记录的是执行失败或异常中断的命令及其错误原因是定位为什么某个工作流没能启动/没按预期触发的第一现场。两张表的建表语句可分别在 dolphinscheduler_mysql.sql 与 dolphinscheduler_postgresql.sql 中查到Mapper 实现在 CommandMapper.xml 与 ErrorCommandMapper.xml。运维建议定期例如每日核对失败命令列表将失败原因归类——是资源不足、租户/环境配置错误还是上游依赖未就绪——再针对性修复可显著降低命令失败率。审计日志谁在什么时间对系统做了什么审计日志Audit Log是监控中心的安全与合规模块其定位在官方文档中表述为提供关于谁访问了系统、对系统执行了什么操作以及相关时间的信息从而加强系统安全与可维护性。审计日志页面的前端逻辑在 audit-log/use-table.ts 中列表支持按用户、模型类型、操作类型、模型名称和时间范围组合过滤并分页展示。每条审计记录的列定义如下列含义用户名userName执行操作的用户模型类型modelType被操作的对象类型如项目、工作流、任务、租户、数据源等模型名称modelName被操作对象的具体名称操作类型operationType执行的操作如创建、更新、删除、上线、下线等描述description操作的具体描述耗时latency, ms本次操作的耗时毫秒创建时间createTime审计记录产生的时间从源码看前端通过 audit 服务模块 调用queryAuditLogListPaging分页查询、queryAuditModelType查询可审计的模型类型与queryAuditLogOperationType查询操作类型三个接口。审计日志的价值体现在安全审计定位可疑操作例如谁在什么时间删除了某个工作流或修改了权限故障回溯latency字段能帮助判断某个管理操作是否异常缓慢合规留痕满足企业级平台对操作可追溯的要求。结合源码的实战巡检建议综合上述接口与实现运维人员可以不用依赖 Web UI直接通过 REST API 对集群做自动化巡检节点存活巡检定时请求GET /monitor/MASTER、GET /monitor/WORKER、GET /monitor/ALERT_SERVER检查返回节点列表的lastHeartbeatTime是否在合理时间窗口内结合各节点心跳周期判断并关注节点数量是否符合预期多机部署时不应缺失节点数据库健康巡检请求GET /monitor/databases确认底层元数据库连接正常响应结果无异常指标调度压力巡检查询t_ds_command表的命令积压量若持续增长则需扩容 Master 或排查下游阻塞同时关注t_ds_error_command表的新增失败记录及时处理失败命令运行负载细查管理员可调用GET /monitor/masters/workflow-executors?masterAddresshost:port与GET /monitor/workers/task-executors?serverAddresshost:port查看具体节点上正在运行的工作流与任务实例定位负载热点合规审计通过审计日志接口或页面按时间范围导出操作记录纳入日常安全巡检流程。需要提醒的是上述接口中查询运行工作流/任务实例的两个接口在服务端有ADMIN_USER权限校验见 MonitorServiceImpl.java非管理员调用会返回无权限错误自动化脚本请使用管理员账号。此外/monitor/{nodeType}的nodeType需与 RegistryNodeType 中定义的注册节点类型保持一致。小结DolphinScheduler 监控中心虽以看板形态呈现背后却串联了注册中心心跳、DAO 插件健康探测、调度命令表与审计表四条数据链路。本文从文档骨架出发补齐了各页面的字段含义、接口路径与源码实现你可以据此在 Web UI 之外构建自己的脚本化巡检体系。若要深入某一环节建议继续阅读 MonitorController.java 与 MonitorServiceImpl.java 的完整实现以及 dolphinscheduler-dao 中的命令实体与建表 SQL形成对监控体系的全链路理解。【免费下载链接】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),仅供参考