From e656b79297b574d4766b82e3da2839d3e2b05de6 Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Mon, 19 Apr 2021 16:21:06 +0200 Subject: [PATCH] netclass: retrieve interface names and filter before parsing We should filter excluded interfaces before parsing the interface details. This change is based on https://github.com/prometheus/procfs/pull/376 Signed-off-by: Jan Fajerski --- collector/netclass_linux.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/collector/netclass_linux.go b/collector/netclass_linux.go index a2984a5e..7d48b456 100644 --- a/collector/netclass_linux.go +++ b/collector/netclass_linux.go @@ -183,15 +183,21 @@ func pushMetric(ch chan<- prometheus.Metric, subsystem string, name string, valu } func (c *netClassCollector) getNetClassInfo() (sysfs.NetClass, error) { - netClass, err := c.fs.NetClass() + netClass := sysfs.NetClass{} + netDevices, err := c.fs.NetClassDevices() if err != nil { return netClass, err } - for device := range netClass { + for _, device := range netDevices { if c.ignoredDevicesPattern.MatchString(device) { - delete(netClass, device) + continue } + interfaceClass, err := c.fs.NetClassByIface(device) + if err != nil { + return netClass, err + } + netClass[device] = *interfaceClass } return netClass, nil