我正在尝试显示内存使用率最高的前 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
提出的建议,但无法解决问题,因此正在寻找其他建议。
从
by (container)
聚合器中删除 topk
分组 - 您将按容器标签进行分组,这意味着您将获得每个容器的前 5 个值,因此您将获得所有容器的值。
您的查询应该变成这样:
sort_desc(
topk (
5,
max by (container) (
max_over_time(container_memory_usage_bytes{container!="",namespace=~"(ns1|ns2|ns3)"}[$__interval])
)
)
)