如何在 Prometheus 查询中组合单独的时间序列标签?
How to combine separate timeseries labels in Prometheus query?
我有以下时间序列条目。
ifDescr{ifDescr="GigabitEthernet1/1",ifIndex="1",instance="x.x.x.x",job="snmp"} 1
ifDescr{ifDescr="GigabitEthernet1/2",ifIndex="2",instance="x.x.x.x",job="snmp"} 1
ifDescr{ifDescr="GigabitEthernet5/3",ifIndex="3",instance="x.x.x.x",job="snmp"}
ifHCInOctets{ifIndex="1",instance="x.x.x.x",job="snmp"}
ifHCInOctets{ifIndex="2",instance="x.x.x.x",job="snmp"}
ifHCInOctets{ifIndex="2",instance="x.x.x.x",job="snmp"}
事实上,我无法判断哪个索引与哪个描述相匹配,这让人很困惑。
有没有一种方法可以基本上使用 ifIndex
将上述标签连接起来以关联到 ifDesc 标签?或者也许可以使用该作业将两个时间序列联系在一起?
我查看了 group_left
功能,但无法弄清楚如何让它在 combine/aggregate 标签上工作。
在这种情况下,您需要 rate(ifHCInOctets[5m]) * ignoring(ifDescr) group_left(ifDescr) ifDescr
解释:
Prometheus 将只允许您对系列之间的操作使用分组。 ifDescr
的值始终为“1”,因此乘法是安全的。
ignoring
子句意味着不要使用 ifDescr
标签进行匹配(因为它只出现在其中一个系列中)。 ifIndex
、instance
和 job
将被使用。
group_left
正在指定您想要从系列 ifDescr
中获得的标签。在这种情况下,它们具有相同的名称。
<vector expr> <bin-op> ignoring(<label list>) group_left(<label list>) <vector expr>
我有以下时间序列条目。
ifDescr{ifDescr="GigabitEthernet1/1",ifIndex="1",instance="x.x.x.x",job="snmp"} 1
ifDescr{ifDescr="GigabitEthernet1/2",ifIndex="2",instance="x.x.x.x",job="snmp"} 1
ifDescr{ifDescr="GigabitEthernet5/3",ifIndex="3",instance="x.x.x.x",job="snmp"}
ifHCInOctets{ifIndex="1",instance="x.x.x.x",job="snmp"}
ifHCInOctets{ifIndex="2",instance="x.x.x.x",job="snmp"}
ifHCInOctets{ifIndex="2",instance="x.x.x.x",job="snmp"}
事实上,我无法判断哪个索引与哪个描述相匹配,这让人很困惑。
有没有一种方法可以基本上使用 ifIndex
将上述标签连接起来以关联到 ifDesc 标签?或者也许可以使用该作业将两个时间序列联系在一起?
我查看了 group_left
功能,但无法弄清楚如何让它在 combine/aggregate 标签上工作。
在这种情况下,您需要 rate(ifHCInOctets[5m]) * ignoring(ifDescr) group_left(ifDescr) ifDescr
解释:
Prometheus 将只允许您对系列之间的操作使用分组。 ifDescr
的值始终为“1”,因此乘法是安全的。
ignoring
子句意味着不要使用 ifDescr
标签进行匹配(因为它只出现在其中一个系列中)。 ifIndex
、instance
和 job
将被使用。
group_left
正在指定您想要从系列 ifDescr
中获得的标签。在这种情况下,它们具有相同的名称。
<vector expr> <bin-op> ignoring(<label list>) group_left(<label list>) <vector expr>