当前位置: 首页 > news >正文

Spring Boot Actuator 详细使用说明(完整代码与配置)

Spring Boot Actuator 详细使用说明(完整代码与配置)

在这里插入图片描述


1. 依赖引入

pom.xml 中添加 Actuator 依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2. 核心配置与安全设置
2.1 允许暴露的端点配置(application.yml
management:endpoints:web:exposure:include: "health,info,metrics,prometheus,env,loggers,shutdown"  # 按需选择端点
2.2 安全配置(结合 Spring Security)
// SecurityConfig.java
@Configuration
@EnableWebSecurity
public class SecurityConfig {@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http.authorizeHttpRequests().requestMatchers("/actuator/health", "/actuator/info").permitAll() // 允许公开访问.requestMatchers("/actuator/**").hasRole("ACTUATOR") // 其他端点需角色验证.and().httpBasic() // 启用 Basic Auth.and().formLogin(); // 启用表单登录return http.build();}@Beanpublic UserDetailsService userDetailsService() {UserDetails user = User.withDefaultPasswordEncoder().username("admin").password("password").roles("ACTUATOR") // 赋予访问 Actuator 的角色.build();return new InMemoryUserDetailsManager(user);}
}

3. 常用端点详解与代码示例
3.1 /actuator/health - 健康检查

自定义健康指标:

// CustomHealthIndicator.java
@Component
public class CustomHealthIndicator implements HealthIndicator {@Overridepublic Health health() {try {// 模拟数据库连接检查boolean isConnected = checkDatabaseConnection();if (isConnected) {return Health.up().build();}} catch (Exception e) {return Health.down().withDetail("Error", e.getMessage()).build();}return Health.outOfService().build();}private boolean checkDatabaseConnection() {// 实际实现数据库连接检查逻辑return true;}
}
3.2 /actuator/info - 应用信息

配置元数据(application.yml):

info:app:name: "MySpringApp"version: "1.0.0"build: "2023-10-01"
3.3 /actuator/metrics - 性能指标

自定义指标(计数器+计时器):

// CustomMetrics.java
@Component
public class CustomMetrics {private final MeterRegistry registry;public CustomMetrics(MeterRegistry registry) {this.registry = registry;}@PostConstructpublic void init() {// 计数器:记录用户注册次数Counter userRegistrationCounter = registry.counter("user.registration.count");userRegistrationCounter.increment();// 计时器:记录某个方法的执行时间Timer methodTimer = registry.timer("my_method.timer");methodTimer.record(() -> {// 需要计时的代码逻辑});}
}
3.4 /actuator/loggers - 日志管理

动态调整日志级别(通过 Postman 或 curl):

curl -X POST \http://localhost:8080/actuator/loggers/com.example \-H 'Content-Type: application/json' \-d '{"configuredLevel": "DEBUG"}'
3.5 /actuator/shutdown - 应用关闭

启用关闭端点(application.yml):

management:endpoints:enabled-by-default: trueshutdown:enabled: true
3.6 /actuator/prometheus - Prometheus 集成

配置(application.yml):

management:metrics:export:prometheus:enabled: true

4. 自定义端点示例
// CustomEndpoint.java
@Component
@Endpoint(id = "custom")
public class CustomEndpoint {@ReadOperationpublic Map<String, String> getCustomData() {return Map.of("message", "Hello from Actuator!");}@WriteOperationpublic void setCustomData(@Selector String key, String value) {// 处理写操作逻辑}
}

5. 完整配置与测试
5.1 完整 application.yml 示例
server:port: 8080spring:application:name: my-spring-appmanagement:endpoints:web:exposure:include: "health,info,metrics,prometheus,env,loggers,shutdown,custom"endpoint:health:show-details: ALWAYS # 显示详细健康检查信息shutdown:enabled: truemetrics:export:prometheus:enabled: true
5.2 测试端点
# 查看健康状态
curl http://localhost:8080/actuator/health# 获取自定义端点数据
curl http://localhost:8080/actuator/custom# 触发应用关闭(需认证)
curl -X POST -u admin:password http://localhost:8080/actuator/shutdown

6. 功能总结表格
端点功能配置关键项安全要求示例代码
/actuator/health应用健康状态检查management.endpoint.health.show-details=ALWAYS公开/受限CustomHealthIndicator.java
/actuator/info应用元数据展示info.app.* 配置公开application.yml
/actuator/metrics性能指标监控(内存、CPU、HTTP请求等)management.metrics.export.prometheus.enabled=true受限CustomMetrics.java
/actuator/loggers动态调整日志级别-受限curl 命令示例
/actuator/shutdown优雅关闭应用management.endpoint.shutdown.enabled=true受限application.yml
/actuator/prometheusPrometheus 指标导出management.metrics.export.prometheus.enabled=true受限Prometheus 配置
/actuator/custom自定义端点(示例返回固定文本)自定义 @Endpoint 注解组件受限CustomEndpoint.java

7. 注意事项
  1. 安全性:生产环境必须配置 Spring Security,敏感端点(如 env)应设置权限。
  2. 性能影响:高频指标采集可能增加系统负载,可通过 management.metrics.use-registry=none 禁用默认指标。
  3. 监控集成:结合 Prometheus + Grafana 可实现可视化监控,需部署 Prometheus 服务器并配置抓取任务。

通过以上配置和代码示例,可以快速集成 Actuator 的核心功能,并根据需求扩展自定义逻辑。

相关文章:

  • 第五篇:linux之vim编辑器、用户相关
  • 精准管控,安全护航 -Acrel-2000 电力监控系统助力配电房数字化升级
  • [企业应用开发] 十年稳定使用体验谈:Bex5 企业内部系统开发平台实践总结
  • 基于机器学习的多光谱遥感图像分类方法研究与定量评估
  • Linux与Anaconda环境部署与管理(运维交接)
  • Windows 同步-Windows 单向链表和互锁链表
  • OpenCV物体计数示例
  • docker本地虚拟机配置
  • 课外知识:isinstance()与issubclass()的区别
  • Filename too long 错误
  • 《TCP/IP详解 卷1:协议》之第四、五章:ARP RARP
  • C#使用sftp远程拷贝文件
  • 黑马点评redis改 part 4
  • 开源的自动驾驶模拟器
  • C++ 的 IO 流
  • DAPP(去中心化应用程序)开发全解析:构建去中心化应用的流程
  • SVT-AV1编码器初始化函数
  • 力扣刷题Day 25:反转链表(206)
  • 【android bluetooth 协议分析 11】【AVDTP详解 1】【宏观感受一下avdtp是个啥东东】
  • 入住刚装修好的新房,房间隔音太差应该怎么办?
  • “低头捡星光”,艺术创作直面三江源生态保护
  • 浦江观察|3.6亿元消费券,为上海餐饮业带来了什么?
  • 税率飙至3500%!美国双反大棒重击东南亚光伏,中企如何应对
  • 河南省粮食和物资储备局党组书记吴祖明已任省国资委主任
  • 全国人大常委会启动工会法执法检查
  • 南北皆宜的“中国酒都”宿迁:下一程如何更“醇厚绵长”