1.5. 配置探测模板
您可以在一个 Cryostat 实例的自定义资源(CR)中配置 probeTemplates 属性,使其包含多个自定义探测模板。探测模板描述了 Cryostat 可以处理的一组对象,以便 Cryostat 可以在 JVM 应用上完成一系列 JDK Mission Control (JMC) Agent 操作。这意味着,当您需要诊断正在运行的 JVM 应用程序的问题时,Cryostat 与 JMC 代理相结合,您可以为您提供更多信息。
作为在 Cryostat Web 控制台中直接上传探测模板的替代选择,您可以在 ConfigMap 中存储探测模板文件以方便检索。在 ConfigMap 中存储探测模板后,您可以使用 Cryostat Operator 将 Cryostat 实例配置为使用指定 ConfigMap 中的预加载探测模板。然后,您可以使用预加载的探测模板和 JMC 代理来诊断 Java 应用程序的问题。
先决条件
-
下载并安装
jmc软件包。 - 下载 Adoptium Agent JAR 文件。请参阅 adoptium/jmc-build (GitHub)。
-
使用
--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED标志启动 Java 应用程序。例如,./<your_application> --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED。 为您的 Java 应用启动 JMC 代理。如果您使用红帽构建的 OpenJDK 17 或更早版本,请参阅 开始 JDK Mission Control (JMC)代理 (使用红帽构建的 JDK Flight Recorder)。
注意Red Hat build of OpenJDK 21 不再提供 JMC 的发布。如果您使用红帽构建的 OpenJDK 21 或更高版本,您可以使用 JMC 的外部实例,如 Adoptium 的 Eclipse Mission Control。有关 JMC 删除的更多信息,请参阅红帽知识库文章: JDK 21 中的 JDK Mission Control (JMC)?
- 使用 Red Hat OpenShift Web 控制台登录到 OpenShift Container Platform。
- 登录到您的 Cryostat web 控制台。
流程
使用您的首选文本编辑器创建 XML 配置文件。使用 JFR 事件信息填充文件,如应用程序上必须执行哪些事件 Cryostat。
以下示例显示了包含 JFR 事件信息的自定义探测模板 XML 文件。当此文件上传到 Cryostat 时,Cryostat 可以将名为 Cryostat 代理插件 Demo Event 的自定义 JFR 事件添加到应用程序中。当 JMC 代理的
retrieveEventProbes方法被调用时,Cryostat 会启动 JFR 事件。<jfragent> <!-- Global configuration options --> <config> <classprefix>__JFREvent</classprefix> <allowtostring>true</allowtostring>\ <allowconverter>true</allowconverter> </config> <events> <event id="cryostat.demo.jfr.event9"> <label>Cryostat Agent Plugin Demo Event</label> <description>Event for the agent plugin demo</description> <path>io/cryostat/demo/events</path> <stacktrace>true</stacktrace> <class>io.cryostat.core.agent.AgentJMXHelper</class> <method> <name>retrieveEventProbes</name> <descriptor>()Ljava/lang/String;</descriptor> </method> <location>WRAP</location> </event> </events> </jfragent>-
通过在 CLI 中输入
oc login命令登录到您的 Red Hat OpenShift Web 控制台。 通过在 CLI 中输入以下命令,从探测模板规则创建
ConfigMap资源。您必须在要部署 Cryostat 应用程序的路径中发出该命令。您可以使用此资源存储运行 Cryostat 实例的集群中的探测模板文件。使用 CLI 为探测模板创建 ConfigMap 资源示例
$ oc create configmap <probe_template_name> --from-file=<path_to_custom_probe_template>如果要开始创建 Cryostat 实例,请执行以下步骤:
- 在 Red Hat OpenShift web 控制台中,点 Operators > Installed Operators。
- 从可用 Operator 列表中,选择 Red Hat build of Cryostat。
- 在 Operator 详情页中,点 Details 选项卡。
- 在 Provided APIs 部分中,选择 Cryostat,然后单击 Create instance。
在 Create Cryostat 面板中,要将 XML 格式的探测模板上传到资源中,请选择以下选项之一:
如果要使用 Form 视图:
- 点 Form view 单选按钮。
- 进入到 Cryostat 实例的 Probe Templates 部分。
- 在 Probe Templates 菜单中点 Add Probe Templates。在 Red Hat OpenShift 控制台中打开 Probe Templates 部分。
从 Config Map Name 下拉列表中选择包含探测模板的 ConfigMap 资源。
图 1.6. Cryostat 实例的探测模板选项
-
在 Filename 字段中,输入 ConfigMap 中包含的
.xml文件的名称。
如果要使用 YAML 视图:
- 点 YAML 视图 单选按钮。
为
probeTemplates属性指定任何自定义探测模板。此属性将 Cryostat Operator 指向您的 ConfigMap,以便 Operator 能够读取探测模板。为
probeTemplates属性指定探测模板示例-- apiVersion: operator.cryostat.io/v1beta2 kind: Cryostat metadata: name: cryostat-sample spec: ... probeTemplates: - configMapName: custom-probe1 filename: my-probe-template1.xml - configMapName: custom-probe2 filename: my-probe-template2.xml --重要您必须从
configMapName下拉列表中选择与 Cryostat 或 Cluster Cryostat 实例关联的 ConfigMap 名称。另外,您必须在filename字段中指定与 ConfigMap 关联的密钥。
- 如果要为这个 Cryostat 实例配置自定义资源(CR)中的其他属性,请参阅本文档的其它部分来了解有关这些属性的更多信息。
- 如果要完成创建此 Cryostat 实例,请点击 Create。
当您点 Create 时,Operator 详情页中的 Cryostat 选项卡下提供了此 Cryostat 实例。然后,您可以通过点 Operator 详情页面上的实例名称来编辑 Cryostat 实例的 CR 属性,然后从 Actions 下拉菜单中选择 Edit Cryostat。
Cryostat Operator 现在可将自定义自动规则作为 JSON 文件提供给 Cryostat 应用程序。您的自定义自动化规则会在 Cryostat web 控制台中打开默认自动化规则。
验证
- 在 Cryostat web 控制台中,从导航菜单中选择 Flight Recorder > Capture > Instrumentation。
- 在 Probe Templates 选项卡中,检查您预加载探测模板是否显示在可用探测模板列表中。