From f5936d737628929f33b8131f2086e5d9d7896cdd Mon Sep 17 00:00:00 2001 From: Zzm0809 <934230207@qq.com> Date: Wed, 27 Dec 2023 21:20:45 +0800 Subject: [PATCH] added devops docs --- .../dinky/service/impl/TaskServiceImpl.java | 11 +- .../dinky_k8s_quick_start.mdx | 100 +++++++++--------- .../user_guide/devops_center/job_details.md | 98 ++++++++++++++++- .../user_guide/devops_center/job_overview.md | 4 +- 4 files changed, 159 insertions(+), 54 deletions(-) diff --git a/dinky-admin/src/main/java/org/dinky/service/impl/TaskServiceImpl.java b/dinky-admin/src/main/java/org/dinky/service/impl/TaskServiceImpl.java index 43d4d5d36a..98a693f6c3 100644 --- a/dinky-admin/src/main/java/org/dinky/service/impl/TaskServiceImpl.java +++ b/dinky-admin/src/main/java/org/dinky/service/impl/TaskServiceImpl.java @@ -512,13 +512,20 @@ public boolean changeTaskLifeRecyle(Integer taskId, JobLifeCycle lifeCycle) thro if (saved && Asserts.isNotNull(task.getJobInstanceId())) { JobInstance jobInstance = jobInstanceService.getById(task.getJobInstanceId()); jobInstance.setStep(lifeCycle.getValue()); - jobInstanceService.updateById(jobInstance); - log.info("jobInstance [{}] step change to {}", jobInstance.getJid(), lifeCycle.getValue()); + boolean updatedJobInstance = jobInstanceService.updateById(jobInstance); + if (updatedJobInstance) { + jobInstanceService.refreshJobInfoDetail(jobInstance.getId(), true); + log.warn( + "JobInstance [{}] step change to [{}] ,Trigger Force Refresh", + jobInstance.getName(), + lifeCycle.getValue()); + } } return saved; } @Override + @Transactional(rollbackFor = Exception.class) public boolean saveOrUpdateTask(Task task) { Task byId = getById(task.getId()); if (byId != null && JobLifeCycle.PUBLISH.equalsValue(byId.getStep())) { diff --git a/docs/docs/data_integration_guide/dinky_k8s_quick_start.mdx b/docs/docs/data_integration_guide/dinky_k8s_quick_start.mdx index 74518fffce..f4e08b931f 100644 --- a/docs/docs/data_integration_guide/dinky_k8s_quick_start.mdx +++ b/docs/docs/data_integration_guide/dinky_k8s_quick_start.mdx @@ -3,6 +3,7 @@ sidebar_position: 1 id: dinky_k8s_quick_start title: K8s集成 --- + import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -20,27 +21,21 @@ Dinky支持以下几种 Flink on k8s 运行模式: **部分内容可参考 Flink 对应集成 k8s 文档链接** - - - -[https://nightlies.apache.org/flink/flink-docs-release-1.13/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) - - - - -[https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) - - - - -[https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) - - - - -[https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) - - + + [https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) + + + [https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) + + + [https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) + + + [https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) + + + [https://nightlies.apache.org/flink/flink-docs-release-1.18/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) + @@ -144,52 +139,61 @@ ADD extends /opt/flink/lib # 把当前extends目录下的jar添加进依赖目 ##### Kubernetes 配置 -| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | -|--------|--------------------------------------------------------|:----:|:---:|:----------:| -| 暴露端口类型 | 支持NodePort与ClusterIP | 是 | 无 | NodePort | -| Kubernetes 命名空间 | 集群所在的 Kubernetes 命名空间 | 是 | 无 | dinky | -| K8s 提交账号 | 集群提交任务的账号 | 是 | 无 | default | -| Flink 镜像地址 | 上一步打包的镜像地址 | 是 | 无 | dinky-flink-1.0.0-1.15.4 | -| JobManager CPU 配置 | JobManager 资源配置 | 否 | 无 | 1 | -| TaskManager CPU 配置 | TaskManager 资源配置 | 否 | 无 | 1 | -| Flink 配置文件路径 | 仅指定到文件夹,dinky会自行读取文件夹下的配置文件并作为flink的默认配置 | 否 | 无 | /opt/flink/conf | +| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | +|--------------------|------------------------------------------|:----:|:---:|:------------------------:| +| 暴露端口类型 | 支持NodePort与ClusterIP | 是 | 无 | NodePort | +| Kubernetes 命名空间 | 集群所在的 Kubernetes 命名空间 | 是 | 无 | dinky | +| K8s 提交账号 | 集群提交任务的账号 | 是 | 无 | default | +| Flink 镜像地址 | 上一步打包的镜像地址 | 是 | 无 | dinky-flink-1.0.0-1.15.4 | +| JobManager CPU 配置 | JobManager 资源配置 | 否 | 无 | 1 | +| TaskManager CPU 配置 | TaskManager 资源配置 | 否 | 无 | 1 | +| Flink 配置文件路径 | 仅指定到文件夹,dinky会自行读取文件夹下的配置文件并作为flink的默认配置 | 否 | 无 | /opt/flink/conf | > 如果您有其他的配置项需要添加,请点击添加配置项按钮,添加完毕后,点击保存即可 ##### Kubernetes 连接与pod配置 -| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | -|--------|--------------------------------------------------------|:----:|:---:|:----------:| -|K8s KubeConfig |集群的KubeConfig内容,如果不填写,则默认使用`~/.kube/config`文件 | 否 | 无 | 无 | -|Default Pod Template |默认的Pod模板 | 否 | 无 | 无 | -|JM Pod Template |JobManager的Pod模板 | 否 | 无 | 无 | -|TM Pod Template |TaskManager的Pod模板 | 否 | 无 | 无 | +| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | +|----------------------|-----------------------------------------------|:----:|:---:|:---:| +| K8s KubeConfig | 集群的KubeConfig内容,如果不填写,则默认使用`~/.kube/config`文件 | 否 | 无 | 无 | +| Default Pod Template | 默认的Pod模板 | 否 | 无 | 无 | +| JM Pod Template | JobManager的Pod模板 | 否 | 无 | 无 | +| TM Pod Template | TaskManager的Pod模板 | 否 | 无 | 无 | ##### 提交 FlinkSQL 配置项 (Application 模式必填)-公共配置 -| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | -|--------|----------------------------------------------------------------------------------------------------------|:----:|:---:|:--------------:| -| Jar 文件路径 | 指定镜像内dinky-app的 Jar 文件路径,如果该集群配置用于提交 Application 模式任务时 则必填| 否 | 无 | local:///opt/flink/dinky-app-1.16-1.0.0-jar-with-dependencies.jar | +| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | +|----------|------------------------------------------------------------|:----:|:---:|:-----------------------------------------------------------------:| +| Jar 文件路径 | 指定镜像内dinky-app的 Jar 文件路径,如果该集群配置用于提交 Application 模式任务时 则必填 | 否 | 无 | local:///opt/flink/dinky-app-1.16-1.0.0-jar-with-dependencies.jar | > 由于flink限制,k8s模式只能加载镜像内的jar包,也就是地址必须为local://开头,如果想要自定义jar提交,请查阅jar提交部分 #### Flink 预设配置(高优先级)-公共配置 -| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | -|-----------------|----|:----:|:---:|:--:| -| JobManager 内存 | JobManager 内存大小! | 否 | 无 | 1g | -| TaskManager 内存 | TaskManager 内存大小! | 否 | 无 | 1g | -| TaskManager 堆内存 | TaskManager 堆内存大小! | 否 | 无 | 1g | -| 插槽数 | 插槽数量 | 否 | 无 | 2 | -| 保存点路径 | 对应SavePoint目录 | 否 | 无 | hdfs:///flink/savepoint | -| 检查点路径 | 对应CheckPoint目录 | 否 | 无 | hdfs:///flink/checkpoint | +| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | +|-----------------|--------------------|:----:|:---:|:------------------------:| +| JobManager 内存 | JobManager 内存大小! | 否 | 无 | 1g | +| TaskManager 内存 | TaskManager 内存大小! | 否 | 无 | 1g | +| TaskManager 堆内存 | TaskManager 堆内存大小! | 否 | 无 | 1g | +| 插槽数 | 插槽数量 | 否 | 无 | 2 | +| 保存点路径 | 对应SavePoint目录 | 否 | 无 | hdfs:///flink/savepoint | +| 检查点路径 | 对应CheckPoint目录 | 否 | 无 | hdfs:///flink/checkpoint | ## 启动session集群(可选) + 除了您自己手动部署session集群外,dinky还提供了快捷方式部署Kubernetes session集群,在上面Kubernetes集群配置完成后,点击启动按钮即可向指定Kubernetes集群提交session集群 + ![IMG](http://pic.dinky.org.cn/dinky/docs/test/k8s-config-list.png) + 至此,所有准备工作均已完成完成,接下来就可以通过` kubernetes session`模式或`kubernetes application`模式进行任务提交啦。 + ## 提交 kubernetes application 任务 + 进入数据开发页面,新建一个flink sql任务,选择集群类型为`kubernetes application`,集群选择为我们刚刚配置的集群,点击提交即可 -![IMG](http://pic.dinky.org.cn/dinky/docs/test/k8s-task-demo.png)## 提交 kubernetes session 任务 + +![IMG](http://pic.dinky.org.cn/dinky/docs/test/k8s-task-demo.png) + +## 提交 kubernetes session 任务 + 进入数据开发页面,新建一个flink sql任务,选择集群类型为`kubernetes session`,集群选择为我们刚刚配置的集群,点击提交即可 图片同上 \ No newline at end of file diff --git a/docs/docs/user_guide/devops_center/job_details.md b/docs/docs/user_guide/devops_center/job_details.md index 04d0275ae4..99b57c6e35 100644 --- a/docs/docs/user_guide/devops_center/job_details.md +++ b/docs/docs/user_guide/devops_center/job_details.md @@ -8,11 +8,105 @@ title: 任务详情 :::info 信息 -在此页面内,可以直观的看到 Flink 任务的基本信息,包含在 Dinky 侧定义的一些配置, 以及远端 Flink 任务的运行状态, Dag 执行图, 任务的 输入输出记录等信息. +在此页面内,可以直观的看到 Flink 任务的详细信息. 并且可以在点击某一Dag 节点后,查看该节点的详细信息. 以及支持读取该算子的 CheckPoint 信息(注意: 该功能需要 Flink 任务开启 CheckPoint 功能) ::: -![job_detail_info](http://pic.dinky.org.cn/dinky/docs/zh-CN/user_guide/devops_center/job_detail_info.png) \ No newline at end of file + +## 头部功能区域 + +![header_btns](http://pic.dinky.org.cn/dinky/docs/zh-CN/user_guide/devops_center/header_btns.png) + +> 头部按钮功能区放置了一些常用的操作按钮, 以便于您快速的进行操作.包括: + +- `编辑`: 注意: 此按钮并非修改任务信息的功能,而是在某些情况下任务失联,无法连接任务关联的集群,需要重新映射集群信息,以便于 Dinky 侧能够正确的连接到远端 Flink 集群,以便重新获取任务详细信息. +- `刷新`: 手动刷新当前任务实例的信息 +- `FlinkWebUI`: 跳转到远端 Flink 任务的 WebUI 页面 +- `重新启动`: 重新启动当前任务实例,并生成新的任务实例,并非在当前任务实例上进行重启 +- `智能停止`: 触发此操作后,会在当前任务实例上触发 SavePoint 操作,并在 SavePoint 成功后,停止当前任务实例(注意: 该操作后台会检测当前任务是否配置了 SavePoint 路径,如果没有配置,则不会触发 SavePoint 操作,直接停止任务实例,由 Flink 端调用 SavePoint+Stop 操作) +- `SavePoint 触发`: 触发此操作后,会在当前任务实例上触发 SavePoint 操作 (注意: 此操作不会停止当前任务实例,请确保该任务配置了 SavePoint 路径) +- `SavePoint 暂停`: 暂停当前任务实例的 SavePoint 操作 +- `SavePoint 停止`: 触发此操作后,会在当前任务实例上触发 SavePoint 操作,并在 SavePoint 成功后,停止当前任务实例(注意: 此操作会停止当前任务实例,请确保该任务配置了 SavePoint 路径) +- `普通停止`: 停止当前任务实例,并不会触发 SavePoint 操作 + + +## 作业信息 + +![job_detail_info](http://pic.dinky.org.cn/dinky/docs/zh-CN/user_guide/devops_center/job_detail_info.png) + +如上图所示, 该 Tag 展示了 Flink 任务的基本信息, 包含了 Dinky 侧定义的一些配置, 以及远端 Flink 任务的运行状态, Dag 执行图, 任务的 输入输出记录等信息. + +:::tip 提示 + +- 在配置信息展示区域,可以点击 `Flink实例` 的值,直接跳转至该任务使用的 Flink 实例 + +::: + + +## 作业日志 + +![job_logs](http://pic.dinky.org.cn/dinky/docs/zh-CN/user_guide/devops_center/job_logs.png) + +如上图所示, 该 Tag 展示了 Flink 任务的日志信息, 包含 Root Exception, 以及 Flink JobManager 和 TaskManager 的日志信息.以便于您快速的定位问题. + +## 版本信息 + +![job_version](http://pic.dinky.org.cn/dinky/docs/zh-CN/user_guide/devops_center/job_version.png) + +如上图所示, 该 Tag 展示了 Flink 任务的历史版本信息, 包含了 Flink 任务的历史版本, 以及每个版本的详细信息,此功能在每次任务执行`发布`时,会自动记录当前任务的版本信息,以便于您快速的回滚到某个版本.点击左侧列表中的 `版本号` 即可查看该版本的详细信息. +:::warning 注意 +注意: 此功能提供删除历史版本的功能,但是请谨慎操作,删除后无法恢复. +::: +## 作业快照 + +![job_checkpoint_list](http://pic.dinky.org.cn/dinky/docs/zh-CN/user_guide/devops_center/job_checkpoint_list.png) + +如上图所示, 该 Tag 展示了 Flink 任务的 CheckPoint 信息, 包含了 CheckPoint 列表和 SavePoint 列表, 以及每个 CheckPoint 的详细信息. + +:::tip 提示 +在 CheckPoint 列表中,可以点击 `此处恢复` 按钮,触发从该 CheckPoint 恢复任务的操作,并停止当前任务实例,启动新的任务实例 +::: + + +## 监控 + +![job_metrics_list](http://pic.dinky.org.cn/dinky/docs/zh-CN/user_guide/devops_center/job_metrics_list.png) + +如上图所示, 该 Tag 展示了 Flink 任务的监控信息, 包含了 Flink 任务的监控指标, 以及每个指标的详细信息.此功能需要再任务运行时,自行配置 Flink 任务的监控指标. + +:::tip 拓展 +此功能产生的监控数据 由 Apache Paimon 进行存储,存储方式为`本地文件存储`, 并由后端通过 SSE(Server-Sent Events) 技术进行实时推送,以便于前端实时展示监控数据. +::: + +:::warning 注意 +此功能必须要在任务状态为 `运行中` 时才能正常使用,否则 `任务监控配置` 按钮则不会出现,无法新增监控指标和实时刷新监控指标,但是该任务下已经定义的监控指标,依然可以正常查看. +::: + +## SQL 血缘 + +![job_lineage](http://pic.dinky.org.cn/dinky/docs/zh-CN/user_guide/devops_center/job_lineage.png) + +如上图所示, 该 Tag 展示了 Flink 任务的 SQL 血缘信息,可以直观的看到 Flink 任务的 SQL 血缘关系,以及字段之间的最终关系. +:::tip RoadMap +目前 SQL 血缘功能还在开发中,后续会支持更多的功能,包括: +- [ ] 连接线展示其转换逻辑关系 +- [ ] 血缘关系图的导出 +- [ ] 血缘关系图的搜索 +- [ ] 全局血缘影响分析 +- ... +::: + +## 告警记录 + +![job_alert_list](http://pic.dinky.org.cn/dinky/docs/zh-CN/user_guide/devops_center/job_alert_list.png) + +如上图所示, 该 Tag 展示了 Flink 任务的告警信息,可以直观的看到 Flink 任务的告警信息,以及告警的详细信息. + +:::warning 注意 + +任务告警只有当 任务的生命周期为 `已发布`时,且满足告警规则,并关联了告警组,当任务某个指标满足告警规则时,会触发告警,并在此处展示. + +::: \ No newline at end of file diff --git a/docs/docs/user_guide/devops_center/job_overview.md b/docs/docs/user_guide/devops_center/job_overview.md index 83a915931e..baddd22f15 100644 --- a/docs/docs/user_guide/devops_center/job_overview.md +++ b/docs/docs/user_guide/devops_center/job_overview.md @@ -9,9 +9,9 @@ title: 任务总览 运维中心包括 FlinkSQL 任务运维、FlinkJar 任务运维. -在运维中心,您可以查看作业实例运行详情,针对作业任务的关键指标查看,集群信息,作业快照,异常信息,作业日志,配置信息,FlinkSQL,SQL 血缘,历史版本,告警记录。 +在运维中心,您可以查看作业实例运行详情,针对任务的关键指标查看,集群信息,作业快照,异常信息,作业日志,配置信息,FlinkSQL,SQL 血缘,历史版本,告警记录。 -以便全方位的监控 Flink 任务的运行情况,及时发现问题,解决问题。 +以便全方位的了解 Flink 任务的运行情况,及时发现问题,解决问题。 请注意: 目前只针对于 Flink 任务进行运维管理, 普通 DB SQL 任务暂不支持. :::