【问题标题】:Histogram buckets with @Timed aggregated for some default tags为某些默认标签聚合了 @Timed 的直方图存储桶
【发布时间】:2021-08-06 21:06:09
【问题描述】:

我正在为 http 请求启用直方图,所以我可以在 prometheus 中使用 histogram_quantile。

所以我已经配置了management.metrics.distribution.percentiles-histogram[http.server.requests]: true 并且还设置了 minimum-expected-value 和 maximum-expected-value 以防止桶过多并尝试降低基数。

默认情况下,spring-boot 为任何@RestController(异常、方法、结果、状态、uri)设置以下 WebMvc 标记。例如,对于 http_server_requests_seconds_count 指标来说,这非常有用(并且被使用)。

但是,对于直方图,它会创建 http_server_requests_seconds_bucket。桶列表的大小已减少了最小值/最大值,但它会为每个唯一的标签组合创建桶。我不太关心为每个异常或结果指定响应时间段。对于 uri/method,请。

文档说要替换默认标签,以提供实现 WebMvcTagsProvider 的 @Bean。但我不想替换它们,因为我仍然希望它们用于 http_server_requests_seconds_count,我只是不需要它们用于直方图。

有没有办法以聚合特定标签的直方图桶的方式对其进行配置?

【问题讨论】:

    标签: spring-boot prometheus micrometer


    【解决方案1】:

    在 Prometheus 方面,您应该能够聚合指标,无需指定不想深入研究的标签。但如果你以后想要它们,你可以使用它们:

    例如:

    sum(rate(http_server_requests_seconds_bucket{le="30.0"}[5m]))

    对比

    sum(rate(http_server_requests_seconds_bucket{uri="/smtg", le="30.0"}[5m])) by (status)

    因此,如果您想要更精细的数据,那里的标签可以帮助您,它们不会阻止您查看全局。

    见:https://prometheus.io/docs/practices/histograms/

    如果您根本不想在 Prometheus 中包含这些标签,您可以使用 MeterFilter 删除它们。

    【讨论】:

    • 但重点是我不想要更细粒度的数据。如果您拥有无限的资源,那么拥有所有这些粒度是可以的,但如果您有 SRE 团队要求您减少基数,那么就不是那么好了。为什么要有一些你不需要的指标。
    • @I.Brok 我更新了我的答案,您可以为此使用 MeterFilter。
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2015-03-13
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    相关资源
    最近更新 更多