17.1 使用 Actuator MBean

默认情况下,所有 Actuator 端点都作为 MBean 公开了。但从 Spring Boot 2.2 开始,JMX 默认是禁用的。要在您的 Spring Boot 应用程序中开始 JMX,您可以设置 spring.jmx.enabled 属性为 true。在 application.yml 文件中,像这样:

spring:
  jmx:
    enabled: true

设置了此属性后,JMX 就启用了,所有 Actuator 端点都作为 MBean 公开了。您可以使用 JMX 客户端连接这些 Actuator 端点 MBean。如图 17.1 所示,使用 Java JDK 附带的 JConsole 进行连接,您可以在 org.springframework.boot 下找到 MBean 列表。

图 17.1 Actuator 端点自动显示为 JMX MBean。

Actuator 端点 MBean 的一个优点是,默认情况下它们都是公开的。没有必要像使用 HTTP 那样显式指定启用其中任何一个。但是,您可以通过设置 management.endpoints.jmx.exposure.includemanagement.endpoints.jmx.exposure.exclude 来调整范围。例如,将 Actuator端点 MBean 限制为仅公开 /health/info/bean/conditions 端点,可以设置 management.endpoints.jmx.exposure.include 只包括以下内容:

management:
  endpoints:
    jmx:
      exposure:
        include: health,info,bean,conditions

或者,如果只有少数几个要排除,则可以设置 management.endpoints.jmx.exposure.exclude,像下面这样:

management:
  endpoints:
    jmx:
      exposure:
        exclude: env,metrics

在这里,您可以使用 management.endpoints.jmx.exposure.exclude 来排除 /envmetrics 端点。所有其他 Actuator 端点仍将作为 MBean公开。

要在 JConsole 中的一个 MBean 上执行调用操作,展开左侧树中的端点 MBean,然后选择所需的操作。

例如,如果您想检查 tacos.ingredients 包的日志记录级别,展开 Loggers MBean 并单击名 loggerLevels,如图 17.2 所示。在右上角的表单中,输入包名称 tacos.ingredients,然后单击 LoggerLevel 按钮。

图 17.2 使用 JConsole 显示 Spring Boot 应用程序的日志记录级别。

单击 LoggerLevel 按钮后,将弹出一个对话框,显示来自 /loggers 端点 MBean 的响应。如图 17.3。

图 17.3 在 JConsole 中显示的 /loggers 端点 MBean 的日志级别

尽管 JConsole UI 使用起来有点笨拙,但您应该了解了使用 Mbean 的诀窍,并以基本相同的方式来探索任何 Actuator 端点。如果您不喜欢 JConsole,那没关系,还有很多其他 JMX 客户端可供选择使用。

results matching ""

    No results matching ""