我遇到一个问题,即CPU的显示率超过100%,解决方案是将其除以可用的CPU数量。
以下在仪表盘上工作(使用[ORIGINAL QUERY] / sum(machine_cpu_cores)
):
sum(sum by (container_name)( rate(container_cpu_usage_seconds_total[1m] ) ) / count(node_cpu_seconds_total{mode="system"}) * 100 / sum(machine_cpu_cores)
在图形上,当[ORIGINAL QUERY] / sum(machine_cpu_cores)
时,以下内容将不返回任何数据:
sum(rate(container_cpu_usage_seconds_total{name=~".+"}[$interval])) by (name) * 100 / sum(machine_cpu_cores)
但是,在对值([ORIGINAL QUERY] / 12
)进行硬编码时,以下内容将返回预期的数据:
sum(rate(container_cpu_usage_seconds_total{name=~".+"}[$interval])) by (name) * 100 / 12
我在这里想念什么?
答案 0 :(得分:0)
我希望您的标签集有问题,或者更确切地说是基数有问题
在Prometheus控制台中独立显示表达式的每个部分,并检查标签是否相同(即匹配的标签集),并且每侧上的元素数量均相等(度量的基数相同)。
否则,您可能必须向查询中添加vector matching表达式。
尤其是在以后的promql中需要/ group_left sum(machine_cpu_cores)
的一对多匹配。