运行 AI 引擎以分析收集的数据
您可以使用 AI 引擎来分析收集的数据,并获取有关如何对应用程序进行分区的建议。 分区是单体 Java® 类的分组,可作为微服务的起点。
关于此任务
- 将运行时跟踪的各个部分与用例记录器生成的 JSON 输出中捕获的用例上下文信息相关联。 有关详细信息,请参阅收集 Monoliths 的相关数据。
- 运行时跟踪源自已检测的 Java 单片应用程序的业务案例运行。
- JSON 格式的用例记录器输出使用与测试用例关联的时间戳记。
- 运行 IBM® Mono2Micro™ 人工智能引擎来分析运行时日志。
- 运行分析以创建建议分区的详细调用分析报告。 有关详细信息,请参阅图形视图的元素。
- 创建具有所需文件的目录结构,这些文件由 IBM Mono2Micro 代码生成组件使用。
准备工作
确保满足 系统需求 和以下 AI 引擎需求。
- AI 引擎需要最高级别的目录中的 config.ini 文件,以便对收集的数据进行分析。 如果未提供 config.ini 文件,那么将使用缺省设置创建该文件。 AI 引擎会自动在此最高级别的目录中创建两个子文件夹 mono2micro-output 和 mono2micro-workspace。
- 在 config.ini 文件中,可以指定在数据收集阶段收集的数据的不同类别的相对位置。 以下结构显示了 config.ini 文件的
[LogProcessor]段中收集的所有三类数据的缺省相对位置。[LogProcessor] RunlogDir = 日志 ContextDir = 上下文 TableDir = 表格
- 在 config.ini 文件中, RunlogDir, ContextDir和 TableDir 属性的值必须设置为包含以下项的日志文件的位置。
- 运行时时间流跟踪。
- 用例记录器生成的 JSON 文件。
- 在分析 Java 单片应用程序期间由代码分析器创建的所有文件。
日线追踪 ├────── config.ini ├────── 上下文 │ └── daytrader.json ├────── 日志 │ └── console.log └────── 表格 ├── instrumenter-config.json ├── recommender-config.properties ├── refTable.json └── symTable.json
例如,上图显示了缺省目录结构。 为 Daytrader 应用程序收集的全部数据位于 daytrader-trace 目录下时,此结构显示所有三类内容。 logs 目录包含与 Daytrader (托管在 WebSphere® Application Server Liberty中的样本测试应用程序) 对应的日志文件。 对于生产应用程序,您可以有多个日志文件。 请注意,config.ini 文件的位置与创建缺省 config.ini 文件的位置相同。
过程
- 运行 AI 引擎。 示例中显示了用于运行 mono2micro recommend 命令的语法。
mono2micro recommend -d <collected-data-dir-path>在此命令中, <collected-data-dir-path> 是包含正在考虑的 Java 整体式应用程序的所有收集数据的指定格式的目录的路径名。
要获取有关该命令及其选项的更多信息,请运行 mono2micro recommend --help 命令。
注: 运行 AI 引擎的用户必须对 <collected-data-dir-path> 目录具有读写访问权。 此读写访问权可确保 AI 引擎可以在 <collected-data-dir-path> 目录中创建新的文件和目录。 - 在 AI 引擎运行时,它会发出多条有关各种步骤的进度的参考消息。 要获取更多详细信息,请在 config.ini 文件的
[Global]段中将 LoggingLevel 参数从 WARN 更改为 INFO 。 您还可以运行带有 --verbose 标志的 mono2micro recommend 命令以获取更多信息。注: AI 引擎的运行是有状态的,并且具有内置检查点机制。 如果在运行期间发生故障,或者如果要更改配置参数,那么可以在运行期间从任何时间点重新启动检查点机制。 在不进行任何配置更改的情况下重新运行 AI 引擎将导致无操作。 此外,您可以修改 config.ini 文件中的各种参数以生成额外报告。 您还可以使用几个 AI 调整参数进行试验,这些参数可以更改某些 Java 单片应用程序的分区建议。
结果
- 成功运行后, AI 引擎将创建具有两个子目录 mono2micro-output 和 mono2micro-workspace的 mono2micro 输出目录。
mono2micro-output 目录包含 AI 分析的最终输出以及代码生成所需的所有信息。
mono2micro-workspace 目录包含 AI 分析的中间结果; 通常不需要检查此目录的内容。 如果要使用分区建议功能进行试验,那么可以调整所选 AI 参数 (例如, MaxNumPartitions 参数) ,然后重新运行 AI 引擎。 由于 AI 引擎使用 mono2micro-workspace 目录的内容,因此请勿除去或更改其内容。
运行 AI 引擎将创建缺省 config.ini 文件和目录结构。
- 运行建议命令之前的目录结构
日线追踪 语境 ├── 日志 └──桌子
- 建议的命令运行后的目录结构
日线追踪 ├── config.ini 语境 ├── 日志 ├── mono2micro │ ├── mono2micro-output │ └── mono2micro-workspace └──桌子
- 下图详细地显示了 mono2micro-output 目录的结构和内容。 mono2micro-output 目录包含三个 HTML 报告:
- Cardinal-Report.html,其中包含 Java 调用分析的详细信息。
- Inheritance-Report.html,其中包含有关在 Java 单片应用程序类分析中检测到的继承层次结构的信息。
- Oriole-Report.html,其中包含分区建议的详细信息。
有关这些报告的更多信息,请参阅 Oriole、Cardinal 和 Inheritance 报告。
- Mono2Micro 代码生成器需要 cardinal 目录中的文件。 如需了解更多信息,请参阅为微服务生成启动代码。注: 代码生成所需的 refTable.json 和 symTable.json 文件将从 daytrader-trace/tables 目录复制到 daytrader-trace/mono2micro/mono2micro-output/cardinal 目录。
oriole 目录包含 final_graph.json 文件,其中包含分区建议。 此文件在 IBM Mono2Micro 工作台 UI 中查看。 有关详细信息,请参阅查看分区建议。
mono2micro ├── mono2micro-output │ ├── Cardinal-Report.html │ ├── Inheritance-Report.html │ ├── Oriole-Report.html │ ├────────────────────────────┤ │ │ ├── app_config.txt │ │ ├── cardinal_graph.json │ │ ├── class_run.json │ │ ├── partition.txt │ ├── refTable.json │ │ └── symTable.json │ ├── coverage.txt │ ├── graph_view.txt │ └── 黄鹂 │ └── final_graph.json └── mono2micro-workspace