Skip to content

Commit

Permalink
added devops docs
Browse files Browse the repository at this point in the history
  • Loading branch information
Zzm0809 committed Dec 27, 2023
1 parent 817b11d commit f5936d7
Show file tree
Hide file tree
Showing 4 changed files with 159 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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())) {
Expand Down
100 changes: 52 additions & 48 deletions docs/docs/data_integration_guide/dinky_k8s_quick_start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ sidebar_position: 1
id: dinky_k8s_quick_start
title: K8s集成
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

Expand All @@ -20,27 +21,21 @@ Dinky支持以下几种 Flink on k8s 运行模式:
**部分内容可参考 Flink 对应集成 k8s 文档链接**

<Tabs groupId="flink-version">

<TabItem value="1.13" label="flink-1.13" default>

[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/)

</TabItem>
<TabItem value="1.14" label="flink-1.14" default>

[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/)

</TabItem>
<TabItem value="1.15" label="flink-1.15" default>

[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/)

</TabItem>
<TabItem value="1.16" label="flink-1.16" default>

[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/)

</TabItem>
<TabItem value="1.14" label="flink-1.14" default>
[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/)
</TabItem>
<TabItem value="1.15" label="flink-1.15" default>
[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/)
</TabItem>
<TabItem value="1.16" label="flink-1.16" default>
[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/)
</TabItem>
<TabItem value="1.17" label="flink-1.17" default>
[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/)
</TabItem>
<TabItem value="1.18" label="flink-1.18" default>
[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/)
</TabItem>
</Tabs>


Expand Down Expand Up @@ -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`,集群选择为我们刚刚配置的集群,点击提交即可
图片同上
98 changes: 96 additions & 2 deletions docs/docs/user_guide/devops_center/job_details.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

## 头部功能区域

![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 注意

任务告警只有当 任务的生命周期为 `已发布`时,且满足告警规则,并关联了告警组,当任务某个指标满足告警规则时,会触发告警,并在此处展示.

:::
4 changes: 2 additions & 2 deletions docs/docs/user_guide/devops_center/job_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ title: 任务总览

运维中心包括 FlinkSQL 任务运维、FlinkJar 任务运维.

在运维中心,您可以查看作业实例运行详情,针对作业任务的关键指标查看,集群信息,作业快照,异常信息,作业日志,配置信息,FlinkSQL,SQL 血缘,历史版本,告警记录。
在运维中心,您可以查看作业实例运行详情,针对任务的关键指标查看,集群信息,作业快照,异常信息,作业日志,配置信息,FlinkSQL,SQL 血缘,历史版本,告警记录。

以便全方位的监控 Flink 任务的运行情况,及时发现问题,解决问题。
以便全方位的了解 Flink 任务的运行情况,及时发现问题,解决问题。

请注意: 目前只针对于 Flink 任务进行运维管理, 普通 DB SQL 任务暂不支持.
:::
Expand Down

0 comments on commit f5936d7

Please sign in to comment.