SpringBoot Actuator:服务健康检查与监控配置

SpringBoot Actuator 是 Spring Boot 提供的生产级监控工具,通过 HTTP 或 JMX 端点暴露应用运行状态信息。以下是核心功能配置指南:

一、基础配置
  1. 添加依赖(Maven):
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

  1. 启用端点(application.yml):
management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics  # 开放健康检查、应用信息、性能指标

二、健康检查实现
  1. 默认健康端点

    • 访问路径:/actuator/health
    • 响应示例:
      {
        "status": "UP",
        "components": {
          "diskSpace": { "status": "UP" },
          "ping": { "status": "UP" }
        }
      }
      

  2. 自定义健康指示器

@Component
public class CustomHealthIndicator implements HealthIndicator {
    @Override
    public Health health() {
        boolean isServiceUp = checkExternalService(); // 自定义检测逻辑
        return isServiceUp 
            ? Health.up().build() 
            : Health.down().withDetail("error", "Service unavailable").build();
    }
}

三、监控指标配置
  1. 核心监控项

    端点 路径 功能说明
    Metrics /actuator/metrics JVM/系统性能指标
    Info /actuator/info 应用版本信息
    Env /actuator/env 环境变量配置
  2. 自定义指标

@RestController
public class MetricsController {
    private final Counter requestCounter = Metrics.counter("custom.requests");

    @GetMapping("/api/data")
    public String getData() {
        requestCounter.increment();  // 记录API调用次数
        return "response data";
    }
}

四、安全防护
spring:
  security:
    user:
      name: admin
      password: securepass
management:
  endpoints:
    web:
      base-path: /manage  # 修改默认路径

五、高级功能
  1. 健康状态聚合

    management:
      endpoint:
        health:
          show-components: always  # 显示详细组件状态
          group:
            custom:
              include: diskSpace,customHealth  # 组合多个指示器
    

    • 访问路径:/actuator/health/custom
  2. Prometheus 集成

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
    

    • 自动暴露 /actuator/prometheus 端点

最佳实践

  1. 生产环境仅暴露必要端点(推荐 health, prometheus
  2. 通过 management.server.port 设置独立监控端口
  3. 结合 Spring Security 配置端点访问权限
  4. 使用 @EndpointWebExtension 定制端点响应格式

通过以上配置,可实现对 Spring Boot 应用的实时健康诊断与性能监控,快速定位运行时异常。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐