我正在尝试在 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 将其解释为该期间的单个平均值的方式应用它。更多类似内容:这将计算每个 pod 过去一小时的平均 CPU 使用率并返回一个即时向量,该向量应为每个 pod 提供一个标量值。
不确定这是否是您想要做的,但希望它能有所帮助。