0

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

我在我的代码中创建了一个 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 分钟内花费的平均时间。

4

1 回答 1

0

以下是必需的查询:

每 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)
于 2019-10-01T10:48:46.393 回答