首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PromQl:在一个时间间隔内计算p99

PromQl:在一个时间间隔内计算p99
EN

Stack Overflow用户
提问于 2022-09-22 03:51:10
回答 1查看 222关注 0票数 1

我有多个时间序列延迟度量,每个kubernetes吊舱都有一个。我需要计算整个服务的p99延迟度量,即每隔5分钟计算一次所有豆荚的总和。我该怎么做?

下面是时间序列数据的示例:

代码语言:javascript
复制
service_latency(app=“payments”,pod_name=“pod1”)
service_latency(app=“payments”,pod_name=“pod2”)
service_latency(app=“payments”,pod_name=“pod3”)

PromQl到目前为止:

quantile_over_time(0.99, service_latency{app=“payments”}[5m])

但是,上面的PromQL为每个pod返回p99度量,而不是对整个服务返回。我也不确定它是否真的像我想的那样每5分钟计算一次p99。

这里的PromQL专家能帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2022-09-25 10:12:20

如果您将每个请求的延迟存储为一个单独的带有service_latency名称的示例,那么Prometheus就无法在给定的lookbehind窗口中计算从多个豆荚(也称为多个时间序列)收到的所有样本的百分位数。

我建议改用普罗米修斯直方图。直方图桶可以在多个时间序列上进行聚合,因此您可以使用以下查询来估计给定后视窗口上多个豆荚上所需的百分位数:

代码语言:javascript
复制
histogram_quantile(
  0.99,
    sum(increase(
    service_latency_seconds_bucket[5m]
    )) by (le)
)

分位数文档

与每次将每个传入请求单独存储到Prometheus时相比,直方图通常在查询期间需要更少的磁盘空间和更少的cpu。在每秒提供数千个请求的高加载服务中,这一点尤其明显。

如果您仍然决定坚持当前模式(例如,在tsdb中存储每个传入请求一个单独的示例),那么您可以尝试使用VictoriaMetrics --这是一个类似Prometheus的监视系统。它提供了时间函数,它在给定的时间范围内计算原始样本的直方图。稍后,返回的直方图可以在多个时间序列上进行聚合,并且可以将histogarm_quantile函数应用于它们。例如,下面的查询估计了过去5分钟内service_latency{app="payments"}时间序列的所有原始样本的第99百分位数:

代码语言:javascript
复制
histogram_quantile(0.99,
  sum(histogram_over_time(
    service_latency{app="payments"}[5m]
  )) by (vmrange)
)

另见https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73809157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档