PromQL查询变量不返回数据,但硬编码时有效

时间:2019-06-24 16:49:39

标签: grafana prometheus promql

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

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

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

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

否则,您可能必须向查询中添加vector matching表达式。

尤其是在以后的promql中需要/ group_left sum(machine_cpu_cores)的一对多匹配。