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

如何为Micrometer DistributionSummary记录动态标签值?

给DistributionSummary设置动态标签的实现方法

和Micrometer中Counter的动态标签用法一致,DistributionSummary同样支持在运行时传入标签值,主要有两种实现方式:

1. 使用Metrics静态工具类直接调用

和Metrics.counter的写法完全对应,直接在获取DistributionSummary实例时传入动态标签键值对,然后调用record()方法记录数值:

// 运行时传入动态标签值,获取对应实例并记录数据
Metrics.distributionSummary("my_histogram", "myTag", runtimeTagValue)
       .record(durationMs);

如果需要多个动态标签,直接追加键值对即可:

Metrics.distributionSummary("my_histogram", "tag1", val1, "tag2", val2)
       .record(measurementValue);

2. 通过MeterRegistry实例操作

如果你已经持有MeterRegistry的实例,也可以通过它来获取带动态标签的DistributionSummary:

方式一:直接调用distributionSummary方法

先注册基础的DistributionSummary(也可以不提前注册,Micrometer会自动创建符合配置的实例):

// 注册不带固定动态标签的基础DistributionSummary
DistributionSummary.builder("my_histogram")
    .description("Example histogram")
    .baseUnit("ms")
    .publishPercentiles(0.5, 0.95)
    .serviceLevelObjectives(100.0, 500.0, 1000.0)
    .distributionStatisticExpiry(Duration.ofMinutes(5))
    .distributionStatisticBufferLength(3)
    .register(meterRegistry);

运行时获取带动态标签的实例并记录:

meterRegistry.distributionSummary("my_histogram", "myTag", runtimeTagValue)
             .record(durationMs);

方式二:使用find+tagged定位实例

这种方式可以先检查实例是否存在,再进行记录:

meterRegistry.find("my_histogram")
             .tag("myTag", runtimeTagValue)
             .distributionSummary()
             .ifPresent(summary -> summary.record(durationMs));

核心原理

Micrometer会自动维护不同标签组合的Meter实例,你不需要手动为每个标签值创建单独的DistributionSummary,只要指定标签键和运行时的动态值,框架会自动处理实例的创建和复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:16:16