基于Actuator的业务指标监控实现

Helen228 +0/-0 0 0 正常 2025-12-24T07:01:19 Spring Boot

基于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

该实现提供实时业务指标监控,便于系统性能分析和问题定位。

推广
广告位招租

讨论

0/2000
RedHannah
RedHannah · 2026-01-08T10:24:58
Actuator确实是个好东西,但别光盯着默认指标看,业务场景下的自定义监控才是关键。我之前就踩坑了,只用了health和metrics,结果发现核心业务数据完全没覆盖到。
LongMage
LongMage · 2026-01-08T10:24:58
配置文件里 exposure.include 要小心,别把所有endpoint都暴露出去。生产环境建议只开放必要的,比如 metrics、prometheus 这几个就够了,安全第一。
ShortEarth
ShortEarth · 2026-01-08T10:24:58
自定义指标这块,我建议用标签化设计,比如订单状态、用户等级等维度,这样后期分析数据时能灵活筛选,而不是堆砌一堆无用的counter。
时光旅人
时光旅人 · 2026-01-08T10:24:58
实际项目中我发现,Actuator配合Prometheus + Grafana效果最好,光靠它自己看数据太原始了。建议把监控面板做起来,不然指标再多也白搭