【问题标题】:SpringBoot 2.x metrics with histogram timer带有直方图计时器的 Spring Boot 2.x 矩阵
【发布时间】:2018-07-09 17:03:24
【问题描述】:

在引入Micrometer 作为SpringBoot 中的基础指标提供程序之前,创建您自己的Timer 指标非常简单,该指标发布直方图、预定义的存储桶大小等,只需使用@987654324 @ 图案。似乎在 SpringBoot 2.x 之后,我不再能够在直方图中定义自己的存储桶边界。我只能找到一种方法来告诉 SpringBoot 发布一个我无法控制的百分比直方图。自动配置的http.server.request 指标的百分位直方图几乎可以完成我想要的所有事情,除了它对于我的用例来说有太多的桶。我已经到处寻找有关如何配置该指标的最小值和最大值的解释,但似乎不可能。

如果有人对如何为Timer 配置百分位直方图有任何见解,或者如果有办法直接在Prometheus 中组合存储桶,我将不胜感激。

【问题讨论】:

    标签: java spring-boot metrics prometheus micrometer


    【解决方案1】:

    针对您的特定问题(即存储桶太多)的一种解决方法(不是解决方案,但可能就足够了)是在 Prometheus 配置中过滤掉您在抓取时不需要的存储桶:https://www.robustperception.io/dropping-metrics-at-scrape-time-with-prometheus/

    你必须使用这些方面的东西(还没有测试过):

    scrape_configs:
     - job_name: 'my_job'
       static_configs:
         - targets:
           - my_target:1234
       metric_relabel_configs:
       - source_labels: [ __name__, le ]
         regex: 'http\.server\.request_buckets;(0.1|0.5|1.0)'
         action: drop
    

    这应该(同样,未经测试)删除所有 le="0.1"le="0.5"le="1.0" 存储桶。这对 Prometheus 直方图来说是完全安全的,无论桶是在范围的末尾还是在中间,因为桶是累积的,即 le="1.0" 桶会计算所有出现的值 < 1.0

    【讨论】:

    • 我同意这不应该是解决方案,但它似乎是处理这个具有太多存储桶的确切问题的好方法。但是,我知道我们有对特定存储桶感兴趣的情况,所以我绝对认为应该可以首先操纵应用程序导出的内容。感谢您的解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    相关资源
    最近更新 更多