Prometheus 根据度量值加入,而不是标签?

Prometheus 根据度量值加入,而不是标签?

我有一个 Prometheus 实例snmp_导出器,我有两个指标需要加入,目的是根据 SNMP 中引用的“ifIndex”编号,将 IP 地址和支持 SNMP 的设备上的网络接口结合起来:

公制 值(ifIndex)
如果索引{如果Alias="客户:",如果Descr="GigabitEthernet0/0/0",如果索引="2",如果名称="Gi0/1/0",实例="192.168.0.1",作业="snmp"} 2
ipAddressIfIndex{实例="192.168.0.1", ipAddressAddr="1.1.1.1", 作业="snmp"} 2

两个指标都返回 ifIndex 作为值,但只有一个将其作为标签。我熟悉如何根据匹配的标签连接指标,但到目前为止还找不到匹配值的方法。

我也用另一种方法解决了这个问题,即重新配置 snmp_exporter 以在 ipAddressIfIndex 中包含 ifIndex 标签。毫无疑问,这是首选方案,但文档中没有明确说明如何操作,而且到目前为止,实验都失败了。

对于背景,ipAddressAddr 标签包含设备上第二个接口的(已编辑的)IP,因此遗憾的是它并不像使用实例地址那么简单。

答案1

==您可以使用and进行这样的连接group_left。例如,提供问题中的类似内容。

ifIndex == on(instance) group_left(ipAddressAddr) ipAddressIfIndex

此查询将获取所有具有相同的指标ifIndex和的对,对它们进行比较,并返回具有相同值的标签的(如果存在)。ipAddressIfIndexinstanceifIndexipAddressAddripAddressIfIndex

类似“join”的例子可见这里

相关内容