如果我使用以下查询
topk(5,sum(container_memory_usage_bytes{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}) by (kubernetes_namespace,kubernetes_container_name))它返回5个结果作为epxected。
然而,使用
topk(5,sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name))返回了大约18个结果。知道为什么会这样吗?在第二个查询中,我需要做什么更改才能只获得前5个查询?
发布于 2019-12-05 23:01:33
也有同样的问题,我在查询中打开了"Instant“,我得到了正确的金额
发布于 2016-08-05 15:39:47
从topk的角度来看,这两个查询都是相同的,都应该返回不超过5个结果。
我可以这样说吗?您不是将其作为查询运行,而是实际上将其作为图形运行?如果是这样的话,你到底想选择哪5个?
发布于 2021-11-12 07:39:45
下面的解决方案可以帮助所有使用Prometheus的用户:
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).的
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]))然后将该值添加到现有公式中:
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结果乘以。
https://stackoverflow.com/questions/38783424
复制相似问题