在现代微服务架构中,监控和管理应用的健康状态是至关重要的。Spring Boot 通过其内置的 Actuator 模块提供了丰富的监控和管理功能。默认情况下,Spring Boot 将管理端点以 JMX MBeans 的形式暴露在 org.springframework.boot 域下。本文将介绍如何通过 JConsole 访问这些端点,并结合实例进行详细说明。
引入 Actuator 依赖
首先,我们需要在 Spring Boot 应用中引入 Actuator 依赖。以下是 pom.xml
文件中的配置示例:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.logicbig.example</groupId>
<artifactId>accessing-actuator-jmx-end-point</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
请注意,虽然 spring-boot-starter-web
不是访问 MBeans 端点所必需的,但包含它可以帮助我们保持主方法 (main()
) 不退出,这对于演示和测试是有帮助的。
编写启动类
接下来,创建一个启动类 JmxEndpointExampleMain
来运行 Spring Boot 应用:
public class JmxEndpointExampleMain {
public static void main(String[] args) {
SpringApplication.run(JmxEndpointExampleMain.class, args);
}
}
使用 JConsole 访问端点
运行上述主类后,我们可以通过 JConsole 访问暴露的 JMX 端点。以下是操作步骤:
- 启动 JConsole。
- 在 JConsole 中,找到并连接到我们的主类
JmxEndpointExampleMain
。 - 忽略“Secure connection failed”的消息,选择“不安全连接”。
- 点击“MBean”标签页。
- 在左侧树形结构中,找到
org.springframework.boot
下的 Spring MBeans。 - 例如,选择
Beans/Operations/beans
,然后在右侧面板点击“beans”按钮(按钮后的括号表示这是一个远程操作,它将返回java.util.Map
作为响应)。
- 点击“beans”操作按钮,查看返回的结果。
同样,其他 Actuator MBeans 也可以被访问,并且可以调用远程“Operations”来获取相关信息。
示例项目
本示例项目使用了以下依赖和技术:
- Spring Boot 2.0.1.RELEASE
- Spring 5.0.5.RELEASE
spring-boot-starter-actuator
:用于使用 Spring Boot 的 Actuator,提供生产就绪功能,帮助您监控和管理应用程序。spring-boot-starter-web
:用于构建 Web 应用程序,包括使用 Spring MVC 的 RESTful 应用程序。默认使用 Tomcat 作为嵌入式容器。- JDK 1.8
- Maven 3.3.9
通过本文的介绍,您应该能够理解如何在 Spring Boot 应用中使用 JConsole 访问 JMX 端点,以及如何利用 Actuator 模块进行应用的监控和管理。这将为您在生产环境中的应用程序提供强大的支持。