首页 > 解决方案 > Prometheus 在计算两个指标的比率时不返回数据

问题描述

我想计算两个指标的比率,但我没有得到任何数据......

我有一些指标,例如:

fs_bytes{filesystem="/var",instance="localhost:9108",job="graphite",metric="Used"}   50.0
fs_bytes{filesystem="/var",instance="localhost:9108",job="graphite",metric="Total"}   100.0

当我尝试执行任何操作(设备、乘法、加法、减法)时,例如:

fs_bytes{instance="localhost:9108",metric="Used"} / fs_bytes{instance="localhost:9108",metric="Total"}

普罗米修斯返回:

no data

当我在 Prometheus 表达式浏览器中单独查询每个指标时,我确实得到了指标值。

怎么了?

标签: prometheuspromql

解决方案


当 prometheus 评估表达式时,该操作隐式应用于共享相同标签集的度量。

尽管我指定了指标名称和大多数标签,Prometheus 仍在寻找具有相同标签集的指标。

但是,在这种情况下,两个指标具有不同的标签值,因此它们不能匹配!(一个指标有metric="Used"另一个有metric="Total"。可能是其中一个指标有一些额外的标签)。

解决方案是使用ignore(or on) 来减少考虑的标签集:

fs_bytes{instance="localhost:9108",metric="Used"} / ignoring(metric) fs_bytes{instance="localhost:9108",metric="Total"}

阅读精美手册!(这里


推荐阅读