You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS SDK Java v2自定义指标收集器等效实现咨询(Spring Boot+Micrometer)

在Java SDK v2中实现全局AWS客户端指标收集(适配Micrometer + Spring Boot)

Java SDK v2不再提供AwsSdkMetrics这类全局静态配置方式,而是通过拦截器(Interceptor)和Micrometer集成模块实现自动指标收集,完全适配Spring Boot环境,无需手动封装每个客户端调用。

1. 添加依赖

首先引入AWS SDK v2的Micrometer集成依赖(以Maven为例):

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>micrometer-core</artifactId>
    <version>${aws.sdk.version}</version>
</dependency>

Gradle依赖配置:

implementation "software.amazon.awssdk:micrometer-core:${awsSdkVersion}"

2. 全局配置AWS客户端指标拦截器

方式一:逐个客户端绑定指标发布器

通过Spring配置类为每个AWS客户端绑定Micrometer指标发布器:

import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.micrometer.MicrometerMetricPublisher;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;

@Configuration
public class AwsClientConfig {

    // 创建全局Micrometer指标发布器
    @Bean
    public MetricPublisher micrometerMetricPublisher(MeterRegistry meterRegistry) {
        return MicrometerMetricPublisher.create(meterRegistry);
    }

    // 配置S3客户端并绑定指标拦截器
    @Bean
    public S3Client s3Client(MetricPublisher metricPublisher) {
        return S3Client.builder()
                .region(Region.US_EAST_1)
                .overrideConfiguration(config -> config.addMetricPublisher(metricPublisher))
                .build();
    }

    // 配置DynamoDB客户端并绑定指标拦截器
    @Bean
    public DynamoDbClient dynamoDbClient(MetricPublisher metricPublisher) {
        return DynamoDbClient.builder()
                .region(Region.US_EAST_1)
                .overrideConfiguration(config -> config.addMetricPublisher(metricPublisher))
                .build();
    }
}

方式二:全局默认配置(所有客户端自动生效)

如果希望所有AWS客户端自动应用指标收集,无需逐个配置,可以设置全局默认客户端配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PostConstruct;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.metrics.MetricPublisher;

@Configuration
public class AwsGlobalConfig {

    @Bean
    public ClientOverrideConfiguration globalClientOverrideConfiguration(MetricPublisher metricPublisher) {
        return ClientOverrideConfiguration.builder()
                .addMetricPublisher(metricPublisher)
                .build();
    }

    @PostConstruct
    public void setGlobalAwsConfig(ClientOverrideConfiguration overrideConfig) {
        SdkClientConfiguration globalConfig = SdkClientConfiguration.builder()
                .option(SdkClientOption.CLIENT_OVERRIDE_CONFIG, overrideConfig)
                .build();
        // 全局设置所有AWS客户端的默认配置
        software.amazon.awssdk.core.client.builder.SdkClientBuilder.setConfiguration(globalConfig);
    }
}

3. 验证指标收集

启动Spring Boot应用后,访问Prometheus端点(默认/actuator/prometheus),可以看到自动生成的AWS相关指标,例如:

  • aws_sdk_requests_total:按服务、操作、状态码区分的总请求数
  • aws_sdk_request_duration_seconds:请求耗时分布统计
  • aws_sdk_request_retries_total:请求重试次数统计

这些指标会自动注入Micrometer的MeterRegistry,被Prometheus抓取后即可在Grafana中可视化。

关键说明

  • Java SDK v2采用依赖注入式配置,替代了v1的全局静态模式,避免了静态初始化的副作用
  • Micrometer集成模块已封装核心指标收集逻辑,无需自定义Collector类
  • 若需扩展自定义指标,可实现MetricPublisher接口,或在Micrometer层面添加自定义标签

内容的提问来源于stack exchange,提问作者Miles Elam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:42:19