运行 AI 引擎以分析收集的数据

您可以使用 AI 引擎来分析收集的数据,并获取有关如何对应用程序进行分区的建议。 分区是单体 Java® 类的分组,可作为微服务的起点。

关于此任务

您可以通过运行 AI 引擎来分析收集的数据并生成分区建议。 当 AI 引擎运行时:
  1. 将运行时跟踪的各个部分与用例记录器生成的 JSON 输出中捕获的用例上下文信息相关联。 有关详细信息,请参阅收集 Monoliths 的相关数据
    • 运行时跟踪源自已检测的 Java 单片应用程序的业务案例运行。
    • JSON 格式的用例记录器输出使用与测试用例关联的时间戳记。
  2. 运行 IBM® Mono2Micro™ 人工智能引擎来分析运行时日志。
  3. 运行分析以创建建议分区的详细调用分析报告。 有关详细信息,请参阅图形视图的元素
  4. 创建具有所需文件的目录结构,这些文件由 IBM Mono2Micro 代码生成组件使用。

准备工作

确保满足 系统需求 和以下 AI 引擎需求。

  • AI 引擎需要最高级别的目录中的 config.ini 文件,以便对收集的数据进行分析。 如果未提供 config.ini 文件,那么将使用缺省设置创建该文件。 AI 引擎会自动在此最高级别的目录中创建两个子文件夹 mono2micro-outputmono2micro-workspace
  • config.ini 文件中,可以指定在数据收集阶段收集的数据的不同类别的相对位置。 以下结构显示了 config.ini 文件的 [LogProcessor] 段中收集的所有三类数据的缺省相对位置。
    [LogProcessor]
    RunlogDir = 日志
    ContextDir = 上下文
    TableDir = 表格
  • config.ini 文件中, RunlogDirContextDirTableDir 属性的值必须设置为包含以下项的日志文件的位置。
    • 运行时时间流跟踪。
    • 用例记录器生成的 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 文件的位置相同。

过程

  1. 运行 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> 目录中创建新的文件和目录。
  2. 在 AI 引擎运行时,它会发出多条有关各种步骤的进度的参考消息。 要获取更多详细信息,请在 config.ini 文件的 [Global] 段中将 LoggingLevel 参数从 WARN 更改为 INFO 。 您还可以运行带有 --verbose 标志的 mono2micro recommend 命令以获取更多信息。
    注: AI 引擎的运行是有状态的,并且具有内置检查点机制。 如果在运行期间发生故障,或者如果要更改配置参数,那么可以在运行期间从任何时间点重新启动检查点机制。 在不进行任何配置更改的情况下重新运行 AI 引擎将导致无操作。 此外,您可以修改 config.ini 文件中的各种参数以生成额外报告。 您还可以使用几个 AI 调整参数进行试验,这些参数可以更改某些 Java 单片应用程序的分区建议。

结果

  • 成功运行后, AI 引擎将创建具有两个子目录 mono2micro-outputmono2micro-workspacemono2micro 输出目录。

    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.jsonsymTable.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