基于Actuator的业务指标监控实现
Spring Boot Actuator是Spring Boot提供的生产就绪功能模块,用于监控和管理应用程序。本文将详细介绍如何通过Actuator实现业务指标监控。
1. 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2. 配置启用指标
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus
endpoint:
metrics:
enabled: true
prometheus:
enabled: true
3. 创建自定义指标
@Component
public class BusinessMetrics {
private final MeterRegistry registry;
public BusinessMetrics(MeterRegistry registry) {
this.registry = registry;
}
public void recordOrder(String status, long duration) {
Counter.builder("orders.processing")
.tag("status", status)
.register(registry)
.increment();
Timer.builder("order.processing.time")
.tag("status", status)
.register(registry)
.record(duration, TimeUnit.MILLISECONDS);
}
}
4. 实现监控接口
@RestController
@RequestMapping("/api/business")
public class BusinessController {
private final BusinessMetrics metrics;
@Autowired
public BusinessController(BusinessMetrics metrics) {
this.metrics = metrics;
}
@PostMapping("/order")
public ResponseEntity<String> createOrder(@RequestBody OrderRequest request) {
long startTime = System.currentTimeMillis();
try {
// 业务逻辑
String orderId = processOrder(request);
metrics.recordOrder("success", System.currentTimeMillis() - startTime);
return ResponseEntity.ok(orderId);
} catch (Exception e) {
metrics.recordOrder("failure", System.currentTimeMillis() - startTime);
return ResponseEntity.status(500).build();
}
}
}
5. 查看监控数据
访问http://localhost:8080/actuator/metrics获取指标数据,或通过Prometheus采集器http://localhost:8080/actuator/prometheus。
6. 数据验证
使用curl命令验证:
curl http://localhost:8080/actuator/metrics/orders.processing
该实现提供实时业务指标监控,便于系统性能分析和问题定位。

讨论