Micrometer Counter vs Distribution总结
Posted
技术标签:
【中文标题】Micrometer Counter vs Distribution总结【英文标题】:Micrometer Counter vs DistributionSummary 【发布时间】:2021-10-20 14:12:01 【问题描述】:使用我要跟踪的请求大小的摘要
请求总数 总请求大小 最大请求大小我可以这样做
meterRegistry.summary("request.size", <tag for url>).record(<size>);
但是我可以使用计数器和最大尺寸的量规来达到同样的效果
meterRegistry.counter("request.size.total", <tag for url>).increment(<size>);
meterRegistry.counter("request.size.count", <tag for url>).increment();
meterRegistry.gauge("request.size.max", <tag for url>).set(<new value if needed>);
// and the gauge value will be stored in atomic variable
问题是,除了更短之外,总结比更长的解决方案有什么好处吗?
【问题讨论】:
【参考方案1】:使用DistributionSummary
表示:
distributionStatisticExpiry
和 distributionStatisticBufferLength
)
你可以有histograms and percentiles
您可以定义 SLO
【讨论】:
【参考方案2】:除了@Jonatan Ivanov 的回答。
使用带有tag = <request size>
的计数器意味着将为每个请求大小创建一个新 指标。这意味着您最终可能会得到大量计数器。
如果您认为区分标记是具有较少可能值的东西,并且不会创建太多计数器指标,您仍然可以使用计数器并制作摘要提供的所有聚合。 (分位数除外)。
如果我感兴趣,我会使用计数器,例如大小为 450 的请求数,这是不可能的摘要。
TLDR:
如果您只对总计数和平均大小感兴趣,请使用摘要
如果尺寸差异不是太大并且您对给定尺寸的确切计数感兴趣,请使用计数器。
【讨论】:
但是如果你使用counter with tag = <request size> means a new metric will be created for every request size
,由于基数大,你可能会创建很多仪表,并且可能会出现OOM。以上是关于Micrometer Counter vs Distribution总结的主要内容,如果未能解决你的问题,请参考以下文章