仪表盘
本节介绍如何使用 Spring Cloud Data Flow 的仪表板。
34. 简介
Spring Cloud Data Flow 提供了一个基于浏览器的图形用户界面(称为 Dashboard),用于管理以下信息:
-
应用:应用标签页列出了所有可用的应用程序,并提供了注册和注销它们的控制选项。
-
运行时:运行时选项卡提供所有正在运行的应用程序的列表。
-
流(Streams):流(Streams) 标签页允许您列出、设计、创建、部署和销毁流定义。
-
任务:任务标签页允许您列出、创建、启动、调度和销毁任务定义。
-
作业:作业标签页允许您执行与批处理作业相关的功能。
启动 Spring Cloud Data Flow 后,仪表板可在以下地址访问:
例如,如果 Spring Cloud Data Flow 在本地运行,则仪表板可通过 localhost:9393/dashboard 访问。
如果已启用 HTTPS,仪表板可通过 localhost:9393/dashboard 访问。
如果已启用安全认证,登录表单可通过 localhost:9393/dashboard/#/login 访问。
默认的 Dashboard 服务器端口是 9393。 |
下图显示了 Spring Cloud Data Flow 仪表板的起始页面:
35. 应用程序
仪表板的应用程序选项卡列出了所有可用的应用程序,并提供了注册和注销它们的控件(如适用)。 您可以使用“批量导入应用程序”操作一次性导入多个应用程序。
下图展示了仪表板中典型的应用程序列表:
35.1. 应用程序的批量导入
应用程序可以通过“应用程序”页面上提供的多种方式进行导入。 对于批量导入,应用程序定义应采用属性格式进行表达,如下所示:
<type>.<name> = <coordinates>
以下示例展示了典型的应用程序定义:
task.timestamp=maven://org.springframework.cloud.task.app:timestamp-task:1.2.0.RELEASE
processor.transform=maven://org.springframework.cloud.stream.app:transform-processor-rabbit:1.2.0.RELEASE
在“从 HTTP URI 位置导入应用程序坐标”部分,您可以指定一个指向其他位置存储的属性文件的 URI,该文件应包含如前例所示格式的属性。 或者,您也可以使用“从属性文件导入应用程序坐标”部分中的以属性形式列出应用文本框,直接列出每个属性字符串。最后,如果属性存储在本地文件中,导入文件选项将打开本地文件浏览器以供您选择该文件。 通过上述任一方式设置好定义后,请点击导入应用程序。
下图展示了一个批量导入应用程序的示例页面:
36. 运行时
仪表板(Dashboard)应用程序的运行时(Runtime)选项卡显示所有正在运行的应用程序列表。 对于每个运行时应用程序,会显示其部署状态和已部署实例的数量。 点击应用程序 ID,即可查看所使用的部署属性列表。
下图展示了运行时(Runtime)选项卡的一个使用示例:
37. 流
流(Streams) 标签包含两个子标签:定义(Definitions) 和 创建流(Create Stream)。以下主题介绍了如何使用每个子标签:
37.1. 使用流定义
仪表板的流(Streams)部分包含定义(Definitions)选项卡,其中列出了所有流定义。 在此,您可以选择部署或取消部署这些流定义。 此外,您还可以通过点击销毁(Destroy)来删除该定义。 每一行左侧都有一个箭头,点击该箭头可以查看该定义的可视化表示。 将鼠标悬停在可视化表示中的各个方框上,即可查看有关应用程序的更多详细信息,包括传递给它们的任何选项。
在下图中,timer 流已被展开以显示其可视化表示:
如果你点击“详情”按钮,视图会切换为显示该数据流及其相关数据流的可视化表示。
在前面的示例中,如果你点击 timer 数据流的“详情”,视图将变为如下所示,清晰地展示了这三个数据流之间的关系(其中两个数据流正在监听 timer 数据流):
37.2. 创建一个流
仪表板的流(Streams)部分包含创建流(Create Stream)选项卡,该选项卡提供了Spring Flo设计器。该设计器是一个画布应用程序,提供交互式图形界面,用于创建数据管道。
在此选项卡中,您可以:
-
通过使用 DSL、图形化画布,或两者结合,来创建、管理和可视化流处理管道
-
使用带有内容辅助和自动补全功能的 DSL 编写流水线
-
在 GUI 中使用自动调整和网格布局功能,以更简单、交互式地组织流水线
下图展示了正在使用的 Flo 设计器:
37.3. 部署一个流
流部署页面包含多个选项卡,提供不同的方式来设置部署属性并部署流。
以下截图展示了 foobar(time | log)的流部署页面。
你可以通过以下方式定义部署属性:
-
表单构建器选项卡:一个帮助您定义部署属性(如部署器、应用程序属性等)的构建器
-
自由文本标签页:一个自由文本区域(用于键值对)
您可以在两种视图之间切换。
| 表单构建器提供了对输入内容更严格的验证。 |
37.5. 创建扇入和扇出流
在此示例中,我们有来自HTTP 源和JDBC 源的数据,这些数据被发送到sharedData通道,这代表了一种汇聚(fan-in)使用场景。 在另一端,有一个Cassandra 汇和一个文件汇订阅了sharedData通道,这代表了一种分发(fan-out)使用场景。
37.6. 创建 Tap 流
通过仪表板创建分流(tap)非常简单。 假设你有一个由HTTP Source(HTTP源)和File Sink(文件接收器)组成的流,而你希望对该流进行分流, 同时将数据也发送到一个JDBC Sink(JDBC接收器)。 要创建该分流流,请将HTTP Source的输出连接器连接到JDBC Sink。 该连接会以虚线显示,表示你已创建了一个分流流。
主数据流(HTTP Source 到 File Sink)在您未为其提供名称的情况下将自动命名。 在创建抽样(tap)数据流时,主数据流必须始终显式命名。 在上图中,主数据流被命名为 HTTP_INGEST。
通过使用仪表板,您还可以切换主数据流,使其变为辅助监听(tap)数据流。
将鼠标悬停在现有的主数据流上,即HTTP Source和File Sink之间的连线。 此时会出现多个控制图标,点击标有切换为/切换出监听(tap)的图标, 即可将主数据流转换为监听(tap)数据流。 对监听数据流执行相同操作,可将其切换回主数据流。
| 在直接与命名目的地交互时, 可能存在“n”种组合(输入/输出)。这使您能够创建涉及 各种数据源和目的地的复杂拓扑结构。 |
38. 任务
仪表板的任务标签页当前包含三个子标签页:
38.1. 应用程序
每个应用程序将一个工作单元封装为可重用的组件。 在 Data Flow 运行时环境中,应用程序允许您创建流(streams)和任务(tasks)的定义。 因此,任务选项卡中的应用子选项卡可让您创建任务定义。
| 你也可以使用此选项卡来创建批处理作业。 |
下图展示了一个典型的应用任务列表:
在此屏幕上,您可以执行以下操作:
-
查看详细信息,例如任务应用程序选项。
-
从相应的应用程序创建一个任务定义。
38.2. 定义
此页面列出了数据流任务定义,并提供了启动或销毁这些任务的操作。
下图显示了“定义”页面:
38.2.1. 创建任务定义
下图展示了一个由 timestamp 应用程序组成的工作任务定义,以及可用于创建工作任务定义的任务应用程序列表:
在本页面上,您还可以指定应用程序部署过程中使用的一些属性。 当您对任务定义满意后,可以点击创建任务按钮。随后会弹出一个对话框,要求输入任务定义的名称和描述。至少,您必须为新定义提供一个名称。
38.2.2. 创建组合任务定义
仪表板包含创建组合任务选项卡,该选项卡提供了一个交互式的图形界面,用于创建组合任务。
在此选项卡中,您可以:
-
通过使用 DSL、图形化画布,或两者结合,来创建和可视化组合任务。
-
在 GUI 中使用自动调整和网格布局功能,以更简单、交互性更强的方式组织组合任务。
在创建组合任务页面上,您可以通过输入参数键和参数值来定义一个或多个任务参数。
| 任务参数未指定类型。 |
下图展示了组合任务设计器:
38.2.4. 导入/导出任务
导入/导出页面提供了导入和导出任务的选项。通过点击页面左侧的导入/导出选项即可进入该功能。在此页面中,点击导出任务:使用所选任务创建一个 JSON 文件选项,即可进入Export Tasks(s)页面。
下图显示了任务导出页面:
同样,您可以导入任务定义。为此,请点击页面左侧的导入/导出选项。接着,点击导入任务:从 JSON 文件导入任务选项,以显示导入任务页面。在导入任务页面上,您需要从一个有效的 JSON 文件中导入。您可以手动编写该文件,也可以从任务导出页面导出该文件。
导入文件后,您将收到操作是否成功完成的确认信息。
38.3. 执行
任务执行标签页显示当前正在运行和已完成的任务执行。在本页面中,您可以深入查看任务执行的详细信息页面。此外,您还可以重新启动某次任务执行,或停止正在运行的任务执行。
最后,您可以清理一个或多个任务执行。此操作会从底层持久化存储中删除任何关联的任务或批处理作业。该操作只能针对父级任务执行触发,并会级联至其子任务执行(如果有的话)。
下图显示了执行选项卡:
38.4. 执行详情
在任务执行标签页中,对于每次任务执行,您可以通过点击该任务执行的执行ID来获取有关该次执行的详细信息。
在此屏幕上,您不仅可以查看任务执行页面中的信息,还可以查看以下内容:
-
任务参数
-
外部执行ID
-
批处理作业指示器(指示任务执行是否包含 Spring Batch 作业。)
-
作业执行 ID 链接(点击作业执行 ID 将跳转到该作业执行 ID 的作业执行详情页面。)
-
任务执行时长
-
任务执行退出消息
-
任务执行的日志输出
此外,您还可以触发以下操作:
-
重新启动任务
-
停止一个正在运行的任务
-
任务执行清理(仅适用于父任务执行)
39. 作业
作业执行选项卡允许您查看批处理作业。 屏幕的主要部分提供了作业执行的列表。 批处理作业是执行一个或多个批处理作业的任务。 每次作业执行都包含对任务执行 ID 的引用(在“任务 ID”列中)。
作业执行列表还会显示底层作业定义的状态。 因此,如果底层定义已被删除,则状态列中会显示“未找到定义”。
您可以对每个作业执行以下操作:
-
重启(用于失败的作业)。
-
停止(用于正在运行的作业)。
-
查看执行详情。
| 点击停止按钮实际上会向正在运行的作业发送一个停止请求,该作业可能不会立即停止。 |
下图显示了作业标签页:
39.1. 作业执行详情
启动批处理作业后,作业执行详情页面将显示有关该作业的信息。
下图展示了作业执行详情页面:
作业执行详情页面包含已执行步骤的列表。 您可以点击放大镜图标,进一步深入查看每个步骤执行的详细信息。
39.2. 步骤执行详情
步骤执行详情页面提供有关作业中某个具体步骤的信息。
下图展示了步骤执行详情页面:
步骤执行详情页面提供了所有步骤执行上下文键值对的完整列表。
| 对于异常情况,退出描述字段包含额外的错误信息。 然而,该字段最多只能包含2500个字符。 因此,当异常堆栈跟踪较长时,错误信息可能会被截断。 发生这种情况时,请查看服务器日志文件以获取更多详细信息。 |
39.3. 步骤执行历史
在步骤执行历史记录下,您还可以查看与所选步骤相关的各种指标,例如持续时间、读取次数、写入次数以及其他在其所有执行中的相关数据。 每个指标包含5个属性:
-
Count - 该指标可能参与的步骤执行次数。它并不是指在每次步骤执行期间事件发生的次数。
-
Min - 此步骤所有执行中该指标的最小值。
-
Max - 此步骤所有执行中该指标的最大值。
-
平均值 - 该步骤所有执行中此指标的平均值。
-
标准差 - 此步骤所有执行中该指标的标准差。
步骤执行包含以下指标:
-
提交次数(Commit Count)— 给定步骤所有执行中提交次数的最大值、最小值、平均值和标准差。
-
持续时间 - 给定步骤所有执行的持续时间的最大值、最小值、平均值和标准差。
-
每次读取耗时 - 给定步骤所有执行中,每次读取耗时的最大值、最小值、平均值和标准差。
-
FilterCount - 给定步骤所有执行中过滤器数量的最大值、最小值、平均值和标准差。
-
处理跳过次数(Process Skip Count)— 给定步骤的所有执行中,处理跳过次数的最大值、最小值、平均值和标准差。
-
读取次数 - 给定步骤所有执行中读取次数的最大值、最小值、平均值和标准差。
-
读取跳过次数 —— 给定步骤所有执行中读取跳过次数的最大值、最小值、平均值和标准差。
-
回滚次数 — 给定步骤所有执行中回滚次数的最大值、最小值、平均值和标准差。
-
写入次数 — 给定步骤所有执行中写入次数的最大值、最小值、平均值和标准差。
-
写入跳过次数 - 给定步骤所有执行中跳过次数的最大值、最小值、平均值和标准差。
40. 调度
您可以从 SCDF 仪表板为任务定义创建调度计划。更多信息请参阅微网站中的调度批处理作业部分。
41. 审计
仪表板的审计页面可让您访问已记录的审计事件。审计事件会针对以下情况进行记录:
-
流
-
创建
-
删除
-
部署
-
卸载
-
-
任务
-
创建
-
删除
-
启动
-
-
任务调度
-
创建计划
-
删除计划
-
下图显示了审计记录页面:
通过点击显示详情图标(右侧圆圈中的“i”),您可以获取有关审计详情的更多信息:
通常,审计提供以下信息:
-
记录是什么时候创建的?
-
触发审计事件的用户名称(如果启用了安全功能)
-
审计操作(调度、流或任务)
-
执行的操作(创建、删除、部署、回滚、取消部署或更新)
-
关联 ID,例如流(Stream)或任务(Task)名称
-
审计数据
审计数据属性的写入值取决于所执行的审计操作和操作类型。 例如,当创建一个调度任务时,任务定义的名称、 任务定义属性、部署属性以及命令行参数会被写入 持久化存储中。
敏感信息在保存审计记录之前会以尽力而为的方式进行脱敏处理。 以下任意键都会被检测到,其对应的敏感值将被掩码遮盖:
-
密码
-
密钥
-
键
-
Tokens
-
.*credentials.*
-
vcap_services