0%

Spring Boot Actuator

Spring Boot Actuator 是 Spring Boot 的一套监控系统。

依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

顺便提一句,spring boot 的官方依赖,一般是 spring-boot-starter-xxxx 这种格式的。非官方依赖则是 xxxx-spring-boot-starter 这种格式的。

启动项目。

访问 http://localhost:8080/actuator

可以看到有两个endpoints,一个是 health, 一个是 info。

访问 health:

http://localhost:8080/actuator/health

1
2
3
{
status: "UP"
}

访问 info:

http://localhost:8080/actuator/info

1
{ }

是一个空对象。

我们可以在 application.yml 配置文件中做如下配置:

1
2
3
4
5
6
7
8
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: metrics, health, info

management.endpoint.health.show-details=always 表示在访问 health 时,除了显示 UP 这个状态以外,还要显示更多的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
status: "UP",
components: {
db: {
status: "UP",
details: {
database: "MySQL",
result: 1,
validationQuery: "/* ping */ SELECT 1"
}
},
diskSpace: {
status: "UP",
details: {
total: 250790436864,
free: 18968088576,
threshold: 10485760
}
},
ping: {
status: "UP"
}
}
}

endpoints.web.exposure.include=metrics, health, info 这个表示可以显示的endpoint。

这个值可以填写 *,但是,如果是yaml文件,必须是'*'',而 application.properties 可以直接写 *。这是 yaml 文件和 properties 文件的区别。

我们可以设置 info:

1
2
3
info:
app-name: springboot-mybatis-plus
author: simon

这样,在访问 info endpoint 时,就可以显示上面配置的信息了。

1
2
3
4
{
app-name: "springboot-mybatis-plus",
author: "simon"
}

如果 yaml 里面带了环境变量,在开发时,可以在 IDEA 里面设置。在控制台运行时,命令如下:

java -jar xxx.jar --SOME_ENV=certain_env