PromQL“topk”功能未按预期工作

问题描述 投票:0回答:1

我正在尝试显示内存使用率最高的前 10 个服务。

为此,我编写了以下 promql:

sort_desc(topk(5, max by (container)(max_over_time(container_memory_usage_bytes{namespace=~"(ns1|ns2|ns3)", container!=""}[$__interval]))) by (container))

我正在使用

Bar Gauge
可视化和公制
Options
->
Type
=
Instant

这仍然返回所有值,而不仅仅是

top
10。

我尝试遵循此平台上类似post中针对

gauge
提出的建议,但无法解决问题,因此正在寻找其他建议。

prometheus promql
1个回答
0
投票

by (container)
聚合器中删除
topk
分组 - 您将按容器标签进行分组,这意味着您将获得每个容器的前 5 个值,因此您将获得所有容器的值。

您的查询应该变成这样:

sort_desc(
  topk (
    5,
    max by (container) (
      max_over_time(container_memory_usage_bytes{container!="",namespace=~"(ns1|ns2|ns3)"}[$__interval])
    )
  )
)
© www.soinside.com 2019 - 2024. All rights reserved.