【问题标题】:Publish Micrometer Metrics to Prometheus将千分尺度量发布到 Prometheus
【发布时间】:2019-09-26 12:25:26
【问题描述】:

我正在使用 Spring Boot v2.1.3 和 Micrometer Registry for Prometheus v1.2.1。

我在我的代码中创建了一个 DistributionSummary 并将其添加到 PrometheusRegistry。我正在使用这个指标来存储 API 所用的时间。此外,我根据我的 SLA 创建了存储桶,例如:10ms、20ms 和 60ms。

        DistributionSummary summary = DistributionSummary.builder("nb.api.responsetime")
            .sla(10, 20, 60).register(registry);

我正在使用 Spring Actuator 将指标发布到 Prometheus。

响应“/actuator/prometheus”的 DistributionSummary 可用的指标只有指标的 Sum、Max 和 Count。

nb_api_responsetime_max 15.0
nb_api_responsetime_bucket{le="10.0",} 2.0
nb_api_responsetime_bucket{le="20.0",} 5.0
nb_api_responsetime_bucket{le="60.0",} 5.0
nb_api_responsetime_bucket{le="+Inf",} 5.0
nb_api_responsetime_count 5.0
nb_api_responsetime_sum 56.0

我想显示 API 调用在选定时间内所用的平均时间。例如:API 在过去 5 分钟内花费的平均时间。

【问题讨论】:

    标签: prometheus spring-boot-actuator micrometer spring-micrometer


    【解决方案1】:

    以下是必需的查询:

    每 5 分钟的平均响应时间:

    rate(nb_api_responsetime_sum[5m])/rate(nb_api_responsetime_count[5m])
    

    每分钟请求数:

    round(rate(nb_api_responsetime_count[1m]) * 60)
    

    SLA 满足每分钟:

    sum(rate(nb_api_responsetime_bucket{le="60.0"}[1m])) by (job)
    /
    sum(rate(nb_api_responsetime_count[1m])) by (job)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多