我正在使用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的度量标准仅为度量标准的总和,最大值和计数。
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分钟平均花费的时间。
答案 0 :(得分: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)