首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prometheus topk返回比预期更多的结果

Prometheus topk返回比预期更多的结果
EN

Stack Overflow用户
提问于 2016-08-05 15:20:42
回答 3查看 10.7K关注 0票数 7

如果我使用以下查询

代码语言:javascript
复制
topk(5,sum(container_memory_usage_bytes{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}) by (kubernetes_namespace,kubernetes_container_name))

它返回5个结果作为epxected。

然而,使用

代码语言:javascript
复制
topk(5,sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name))

返回了大约18个结果。知道为什么会这样吗?在第二个查询中,我需要做什么更改才能只获得前5个查询?

EN

回答 3

Stack Overflow用户

发布于 2019-12-05 23:01:33

也有同样的问题,我在查询中打开了"Instant“,我得到了正确的金额

票数 5
EN

Stack Overflow用户

发布于 2016-08-05 15:39:47

topk的角度来看,这两个查询都是相同的,都应该返回不超过5个结果。

我可以这样说吗?您不是将其作为查询运行,而是实际上将其作为图形运行?如果是这样的话,你到底想选择哪5个?

票数 2
EN

Stack Overflow用户

发布于 2021-11-12 07:39:45

下面的解决方案可以帮助所有使用Prometheus的用户:

代码语言:javascript
复制
Formula: sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name)

如果我们查询的是过去3小时的topk,请计算avg_over_time(formula$__range:4h).的

代码语言:javascript
复制
topk(5,avg_over_time(sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name)[$__range:4h]))

然后将该值添加到现有公式中:

代码语言:javascript
复制
Final Formula: sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name) + topk(5,avg_over_time(sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name)[$__range:4h]))*0

对我很管用。不要忘记将topk结果乘以。

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

https://stackoverflow.com/questions/38783424

复制
相关文章

相似问题

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