我正在使用以下配置从一些交换机收集接口统计信息:
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>
...这使得标准选择器可以应用于第二个系列变得更加明显。