Spring Boot Actuator
Spring Boot Actuator 是生产就绪模块,提供健康检查、指标采集、日志管理、远程管理等监控运维功能。
快速开始
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always常用端点
| 端点 | 说明 |
|---|---|
/actuator/health | 应用健康状态 |
/actuator/info | 应用信息 |
/actuator/metrics | 所有指标 |
/actuator/metrics/{name} | 指定指标详情 |
/actuator/beans | 所有 Spring Bean |
/actuator/env | 环境变量 |
/actuator/configprops | 配置属性 |
/actuator/mappings | URL 映射 |
/actuator/loggers | 日志配置 |
/actuator/heapdump | 堆内存 dump |
/actuator/threaddump | 线程 dump |
/health 响应示例
{
"status": "UP",
"details": {
"diskSpace": { "status": "UP" },
"db": { "status": "UP", "database": "MySQL" }
}
}/metrics 常用指标
| 指标 | 说明 |
|---|---|
jvm.memory.used | JVM 内存使用 |
jvm.gc.* | GC 相关 |
http.server.requests | HTTP 请求统计 |
process.cpu.usage | CPU 使用率 |
hikaricp.* | 连接池指标 |
健康检查
Kubernetes 探针
Spring Boot 2.3+ 支持 Liveness 和 Readiness 探针:
management:
health:
livenessstate:
enabled: true
readinessstate:
enabled: true自定义健康检查器
@Component
public class CustomHealthIndicator implements HealthIndicator {
@Override
public Health health() {
if (isHealthy()) {
return Health.up()
.withDetail("service", "OK")
.build();
}
return Health.down()
.withDetail("error", "连接失败")
.build();
}
}自定义端点
@Endpoint(id = "hello")
@Component
public class HelloEndpoint {
@ReadOperation
public String getHello() {
return "Hello from custom endpoint";
}
@WriteOperation
public String postHello(String name) {
return "Hello " + name;
}
@DeleteOperation
public String deleteHello() {
return "Deleted";
}
}| 注解 | HTTP 方法 | 说明 |
|---|---|---|
@ReadOperation | GET | 读取数据 |
@WriteOperation | POST | 修改数据 |
@DeleteOperation | DELETE | 删除数据 |
安全配置
Spring Security 保护端点
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.securityMatcher(EndpointRequest.toAnyEndpoint())
.authorizeHttpRequests(requests ->
requests.anyRequest().hasRole("ENDPOINT_ADMIN"))
.httpBasic(withDefaults());
return http.build();
}
}注意
生产环境 务必限制 Actuator 端点的访问权限,避免暴露敏感信息。可通过 management.server.address=127.0.0.1 限制为本地访问。
Spring Boot Admin 集成
Admin Server
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.7.1</version>
</dependency>@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication { }Admin Client
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.7.1</version>
</dependency>spring:
boot:
admin:
client:
url: http://localhost:9000常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 健康检查失败 | 依赖服务异常 | 检查 DB/Redis 连通性,查看 /actuator/health 详情 |
| 端点无法访问 | 未引入依赖或未配置暴露 | 引入 starter-actuator,配置 exposure.include |
| 指标数据不准确 | 标签不一致或采集间隔问题 | 确认 Metrics 注册和标签配置 |