根据接口名称过滤 prometheus snmp-exporter 的接口结果

根据接口名称过滤 prometheus snmp-exporter 的接口结果

我正在使用以下配置从一些交换机收集接口统计信息:

modules:
  if_mib:
    walk:
      - ifTable
    auth:
      community: monitor

从导出器返回的数据由 索引ifIndex。也就是说,查询ifInOctets{instance="192.168.1.1"}结果如下:

ifInOctets{ifIndex="1",instance="192.168.1.1",job="snmp_if"}    129355
ifInOctets{ifIndex="2",instance="192.168.1.1",job="snmp_if"}    359870890
ifInOctets{ifIndex="3",instance="192.168.1.1",job="snmp_if"}    0
ifInOctets{ifIndex="4",instance="192.168.1.1",job="snmp_if"}    212586200

等等。我想要用于显示目的的接口名称,我可以通过以下查询获取:

ifInOctets{instance="192.168.1.1"} * ignoring(ifDescr) group_left(ifDescr) ifDescr

返回:

{ifDescr="lo",ifIndex="1",instance="192.168.1.1",job="snmp_if"} 129355
{ifDescr="itf0",ifIndex="2",instance="192.168.1.1",job="snmp_if"}   359870890
{ifDescr="imq0",ifIndex="3",instance="192.168.1.1",job="snmp_if"}   0
{ifDescr="eth0",ifIndex="4",instance="192.168.1.1",job="snmp_if"}   2125862004

如何根据属性值过滤结果ifDescr

我尝试了以下操作,预计它会失败,事实上我并不感到惊讶:

ifInOctets{instance="192.168.1.1", ifDescr="eth0"} * ignoring(ifDescr) group_left(ifDescr) ifDescr

答案1

我明白了,但我没有删除这个问题,而是认为其他人可能会觉得这很有用。答案是:

ifInOctets{instance="192.168.1.1"} * ignoring(ifDescr) group_left(ifDescr) ifDescr{ifDescr="eth0"}

我发现本文有助于理解查询语法。特别地,这强调了上面的表达式是:

<series1> * <series2>

...这使得标准选择器可以应用于第二个系列变得更加明显。

相关内容