diff --git a/collector/infiniband_linux.go b/collector/infiniband_linux.go index da206d6a9b..6a869ef188 100644 --- a/collector/infiniband_linux.go +++ b/collector/infiniband_linux.go @@ -158,7 +158,7 @@ func (c *infinibandCollector) pushCounter(ch chan<- prometheus.Metric, name stri } func (c *infinibandCollector) Update(ch chan<- prometheus.Metric) error { - devices, err := c.fs.InfiniBandClass() + deviceNames, err := c.fs.InfiniBandClassDevices() if err != nil { if errors.Is(err, os.ErrNotExist) { c.logger.Debug("infiniband statistics not found, skipping") @@ -167,11 +167,16 @@ func (c *infinibandCollector) Update(ch chan<- prometheus.Metric) error { return fmt.Errorf("error obtaining InfiniBand class info: %w", err) } - for _, device := range devices { - if c.deviceFilter.ignored(device.Name) { + for _, name := range deviceNames { + if c.deviceFilter.ignored(name) { continue } + device, err := c.fs.InfiniBandDevice(name) + if err != nil { + return fmt.Errorf("error obtaining InfiniBand device info: %w", err) + } + infoDesc := prometheus.NewDesc( prometheus.BuildFQName(namespace, c.subsystem, "info"), "Non-numeric data from /sys/class/infiniband/, value is always 1.",