diff --git a/collector/hwmon_linux.go b/collector/hwmon_linux.go index fec2df4037..1d06e89107 100644 --- a/collector/hwmon_linux.go +++ b/collector/hwmon_linux.go @@ -24,6 +24,7 @@ import ( "strconv" "strings" + "github.com/alecthomas/kingpin/v2" "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" @@ -31,6 +32,9 @@ import ( ) var ( + collectorHWmonChipInclude = kingpin.Flag("collector.hwmon.chip-include", "Regexp of hwmon chip to include (mutually exclusive to device-exclude).").String() + collectorHWmonChipExclude = kingpin.Flag("collector.hwmon.chip-exclude", "Regexp of hwmon chip to exclude (mutually exclusive to device-include).").String() + hwmonInvalidMetricChars = regexp.MustCompile("[^a-z0-9:_]") hwmonFilenameFormat = regexp.MustCompile(`^(?P[^0-9]+)(?P[0-9]*)?(_(?P.+))?$`) hwmonLabelDesc = []string{"chip", "sensor"} @@ -47,13 +51,18 @@ func init() { } type hwMonCollector struct { - logger log.Logger + deviceFilter deviceFilter + logger log.Logger } // NewHwMonCollector returns a new Collector exposing /sys/class/hwmon stats // (similar to lm-sensors). func NewHwMonCollector(logger log.Logger) (Collector, error) { - return &hwMonCollector{logger}, nil + + return &hwMonCollector{ + logger: logger, + deviceFilter: newDeviceFilter(*collectorHWmonChipExclude, *collectorHWmonChipExclude), + }, nil } func cleanMetricName(name string) string { @@ -154,6 +163,10 @@ func (c *hwMonCollector) updateHwmon(ch chan<- prometheus.Metric, dir string) er return err } + if c.deviceFilter.ignored(hwmonName) { + return nil + } + data := make(map[string]map[string]string) err = collectSensorData(dir, data) if err != nil {