1

我遇到了一个问题,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

我在这里想念什么?

4

1 回答 1

0

我希望你对标签集有问题,或者更确切地说是基数

在 Prometheus 控制台中独立显示表达式的每个部分并检查标签是否相同(即匹配的标签集),并且每边都有等效数量的元素(度量的基数相同)。

如果没有,您可能必须在查询中添加向量匹配表达式。

尤其是后面的 promql 中的一对多匹配,哪里需要一个/ group_left sum(machine_cpu_cores).

于 2019-06-25T03:56:47.370 回答