当前位置: 首页 > 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 的核心功能,并根据需求扩展自定义逻辑。

http://www.xdnf.cn/news/81397.html

相关文章:

  • 【C++游戏引擎开发】第21篇:基于物理渲染(PBR)——统计学解构材质与光影
  • 基于华为云 ModelArts 的在线服务应用开发(Requests 模块)
  • 数字IC低功耗设计——基础概念和低功耗设计方法
  • 【Linux】用户权限
  • LangChain 核心模块学习:Chains
  • USB 共享神器 VirtualHere 局域网内远程使用打印机与扫描仪
  • 安宝特科技 | Vuzix Z100智能眼镜+AugmentOS:重新定义AI可穿戴设备的未来——从操作系统到硬件生态,如何掀起无感智能革命?
  • 麒麟系统网络连接问题排查
  • 乐视系列玩机------乐视2 x620红灯 黑砖刷写教程以及新版刷写工具的详细释义
  • C++IO流
  • AI 数字短视频数字人源码开发:多维赋能短视频生态革新​
  • 图像预处理-直方图均衡化
  • 卷积神经网络迁移学习:原理与实践指南
  • GSAP 动画引擎实战:打造丝滑动效交互组件库
  • 在 40 亿整数中捕获“恰好出现两次”的数字
  • Git管理
  • 离散化区间和 java c++
  • Springboot整合MyBatisplus和快速入门
  • lspci的资料
  • crewai与langchain分析某公司股票是否可购买
  • prtobuf的原理
  • 2.Spring MVC与WebFlux响应式编程
  • UOS+N 卡 + CUDA 环境下 X86 架构 DeepSeek 基于 vLLM 部署与 Dify 平台搭建指南
  • Nature Communications 面向形状可编程磁性软材料的数据驱动设计方法—基于随机设计探索与神经网络的协同优化框架
  • 30分钟编写十大排序算法完成
  • 施磊老师基于muduo网络库的集群聊天服务器(四)
  • 含锡废水具有显著的回收价值
  • kvm下的ceph主机启动io请求统计
  • AOSP Android14 Launcher3——RecentsView最近任务数据加载
  • Hive学习