我正在尝试在 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
但再一次,它会返回多个时间值。
对于您想要实现的目标,我认为您可以使用
avg_over_time
函数,但以 Grafana 将其解释为一段时间内的单个平均值的方式应用它。更多这样的:
avg(avg_over_time(system_cpu_usage{pod=~"$pod"}[1h])) by (pod)
这将计算每个 Pod 在过去一小时内的平均 CPU 使用率并返回一个即时向量,该向量应该为每个 Pod 提供一个标量值。
不确定这是否是您想要做的,但希望它有帮助。