18.1 使用Actuator MBean

18.1 使用Actuator MBean

我们可以回头看一下表16.1,除了“/heapdump”之外,这里列出的所有端点均暴露成了MBean。我们可以使用任意的JMX客户端连接Actuator端点MBean。借助Java开发工具集中的JConsole,我们可以看到Actuator MBean列到了org.springframework.boot域下,如图18.1所示。

image-20211023113822314

图18.1 Actuator端点会自动暴露为JMX MBean

Actuator MBean端点非常好的一点在于它们默认就是对外暴露的。我们没有必要明确声明要包含哪些MBean端点,但是对于HTTP端点,我们是需要这样做的。我们可以通过设置management.endpoints.jmx.exposure.include和management.endpoints.jmx.exposure.exclude属性来缩小可选的范围。例如,我们想要限制Actuator端点只暴露“/health”“/info”“/bean”和“/conditions”端点,那么可以按照如下的方式设置management.endpoints.jmx.exposure.include:

1
2
3
4
5
management:
endpoints:
jmx:
exposure:
include: health,info,bean,conditions

我们只想排除其中的几个端点的话,可以按照如下的方式设置management.endpoints. jmx.exposure.exclude属性:

1
2
3
4
5
management:
endpoints:
jmx:
exposure:
exclude: env,metrics

在这里,我们使用management.endpoints.jmx.exposure.exclude排除了“/env”和“/metrics”端点。所有其他的Actuator端点依然会暴露为MBean。

要在JConsole中调用一个或多个Actuator MBean所托管的操作,可以在左侧树中展开MBean端点,然后在Operations下选择所需的操作。

例如,你想要探查tacos.ingredients包的日志级别,那么可以展开LoggersMBean并点击名为loggerLevels的操作,如图18.2所示。在右上方的表单中,在name文本域中输入包名(tacos.ingredients),然后点击loggerLevels按钮。

image-20211023113927984

图18.2 使用JConsole展现Spring Boot应用的日志级别

在点击loggerLevels按钮之后,将会弹出一个对话框,展现来自“/loggers”端点MBean的响应,大致如图18.3所示。

image-20211023113941223

图18.3 在JConsole中,“/loggers”端点MBean所展现的日志级别

尽管JConsole UI的使用方式有些笨拙,但是你应该可以掌握它的技巧并使用相同的方式来探索其他的Actuator端点。

如果你不喜欢JConsole,也没有问题,有很多其他的JMX客户端可供选择。