按标签分组的值的直方图

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

我正在尝试在 Grafana 中制作一个直方图,显示一堆 Pod 使用了多少 CPU。我不需要当前使用情况的即时快照,我希望它是每个 Pod 在过去 1 小时内使用量的平均值。

我遇到的问题是我尝试的每个查询似乎都会返回一个范围向量。例如这个查询:

sum(sum_over_time(system_cpu_usage{pod=~"$pod"}[1h])) by (pod)
/
sum(count_over_time(system_cpu_usage{pod=~"$pod"}[1h])) by (pod)

为每个 Pod 返回一个像这样的范围向量

"data": {
  "values": [
    [
      1729874620000,
      1729874640000,
      1729874660000,
      1729874680000,
    ],
    [
      0.48956301869585045,
      0.6437413841918773,
      0.6332958523730499,
      0.5662626892438256,
    ]
  ]
}

但我只想要每个 pod 的即时向量或标量值。

我能得到的最接近的是

last_over_time(avg by (pod) (system_cpu_usage{pod=~"$pod"})[1h:5m])

为每个 Pod 返回此值

"data": {
  "values": [
    [
      1729874680000,
    ],
    [
      0.5662626892438256,
    ]
  ]
}

这几乎正是我想要的。我更喜欢使用

avg_over_time
但再一次,它会返回多个时间值。

grafana promql
1个回答
0
投票

对于您想要实现的目标,我认为您可以使用

avg_over_time
函数,但以 Grafana 将其解释为一段时间内的单个平均值的方式应用它。更多这样的:

avg(avg_over_time(system_cpu_usage{pod=~"$pod"}[1h])) by (pod)

这将计算每个 Pod 在过去一小时内的平均 CPU 使用率并返回一个即时向量,该向量应该为每个 Pod 提供一个标量值。

不确定这是否是您想要做的,但希望它有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.