前奏:先说一下 Java VisualVM
Java VisualVM 是一个能够监控 JVM 的 jdk 自带的图形化工具:
在 $JAVA_HOME/bin
目录下,可直接运行它。
要想监控远程服务器上的 Java 程序,可以在启动项目的时候添加 jmx 启动参数,我提前准备了一个 spring-boot-admin-server-0.0.1-SNAPSHOT.jar
jar 包,上传到我的 Linux 服务器上,添加 jmx 启动参数启动它:
java -jar -Djava.rmi.server.hostname=192.168.242.112 -Dcom.sun.management.jmxremote.port=1888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false spring-boot-admin-server-0.0.1-SNAPSHOT.jar
复制代码
现在打开 jvisualvm ,监控该程序非常简单:
连接上之后,就可以对程序进行监控了,各种指标一览无余:
单体项目,使用 jvisualvm 进行监控完全够用了!
序曲:Spring Boot Actuator 监控
Spring Boot 的 Actuator 是一个用于监控和管理自身应用信息的模块,使用该模块非常简单,只需要加入 spring-boot-starter-actuator
依赖即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
复制代码
我们在 SpringCloudAlibabaDemo
工程下创建一个子工程 spring-boot-admin-server
,引入上述依赖,然后启动项目,访问:http://localhost:8082/actuator
:
这是默认配置下,访问 Actuator 时的信息。
Actuator 端点(Endpoints)可以监视应用程序并与之交互。 Spring Boot 包含许多内置端点,并允许添加自己的端点。例如,health
端点提供基本的应用程序健康信息。
每个单独的端点都可以通过 HTTP 或 JMX 启用或禁用和远程访问。大多数应用程序选择通过 HTTP 对外暴露信息,访问端点的 URL 由 /actuator
前缀以及端点的 ID 组成。例如,默认情况下,health
端点映射到 /actuator/health
,即查看应用程序的健康状况可以访问 URL http://localhost:8082/actuator/health
:
返回信息:
{
"status": "UP"
}
复制代码
UP 表示当前应用处于健康状态,如果是 DOWN 则表示不健康,增加 management.endpoints.health.show-details=ALWAYS
可以查看应用健康状况的详细信息:
management:
endpoint:
health:
show-details: always
复制代码
Actuator 提供了很多端点信息,如下所示:
HTTP方法 | 端点路径 | 含义 | 是否默认暴露 |
---|