如果我使用以下查询
topk(5,sum(container_memory_usage_bytes{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}) by (kubernetes_namespace,kubernetes_container_name))
Run Code Online (Sandbox Code Playgroud)
它按预期返回 5 个结果。
然而与
topk(5,sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name))
Run Code Online (Sandbox Code Playgroud)
大约返回 18 个结果。知道为什么会这样吗?我需要在第二个查询中更改什么才能只获得前 5 个?
在 Grafana 中构建图表时, Prometheus 可能会k从topk(k, ...)返回更多时间序列,因为它独立选择k图表上每个点的最大值的顶部时间序列。图表上的每个点可能有自己的一组顶级时间序列。因此最终的图表可能包含的不仅仅是k时间序列。针对这个问题有以下几种解决方案:
/api/v1/query仅在单个时间戳处评估查询,因此它始终返回来自 的k时间序列topk(k, ...)。topk_* (类似 PromQL 的查询语言)中的函数之一。例如,topk_max(k, ...)返回所选时间范围内具有最大值的时间序列,而topk_last(k, ...)返回具有所选时间范围末尾的最大值的顶部时间序列。选定的时间范围。kk从角度来看,这些是相同的查询topk,两者返回的结果不应超过 5 个。
我是否可以正确地说,您不是将其作为查询运行,而是实际上作为图表运行?如果是这样,您到底想选择哪 5 个?
| 归档时间: |
|
| 查看次数: |
9345 次 |
| 最近记录: |