diff options
Diffstat (limited to 'collector/netdev_common.go')
-rw-r--r-- | collector/netdev_common.go | 65 |
1 files changed, 44 insertions, 21 deletions
diff --git a/collector/netdev_common.go b/collector/netdev_common.go index 2164469..656e2aa 100644 --- a/collector/netdev_common.go +++ b/collector/netdev_common.go | |||
@@ -23,21 +23,24 @@ import ( | |||
23 | "strconv" | 23 | "strconv" |
24 | 24 | ||
25 | "github.com/go-kit/kit/log" | 25 | "github.com/go-kit/kit/log" |
26 | "github.com/go-kit/kit/log/level" | ||
26 | "github.com/prometheus/client_golang/prometheus" | 27 | "github.com/prometheus/client_golang/prometheus" |
27 | "gopkg.in/alecthomas/kingpin.v2" | 28 | "gopkg.in/alecthomas/kingpin.v2" |
28 | ) | 29 | ) |
29 | 30 | ||
30 | var ( | 31 | var ( |
31 | netdevIgnoredDevices = kingpin.Flag("collector.netdev.device-blacklist", "Regexp of net devices to blacklist (mutually exclusive to device-whitelist).").String() | 32 | netdevDeviceInclude = kingpin.Flag("collector.netdev.device-include", "Regexp of net devices to include (mutually exclusive to device-exclude).").String() |
32 | netdevAcceptDevices = kingpin.Flag("collector.netdev.device-whitelist", "Regexp of net devices to whitelist (mutually exclusive to device-blacklist).").String() | 33 | oldNetdevDeviceInclude = kingpin.Flag("collector.netdev.device-whitelist", "DEPRECATED: Use collector.netdev.device-include").Hidden().String() |
34 | netdevDeviceExclude = kingpin.Flag("collector.netdev.device-exclude", "Regexp of net devices to exclude (mutually exclusive to device-include).").String() | ||
35 | oldNetdevDeviceExclude = kingpin.Flag("collector.netdev.device-blacklist", "DEPRECATED: Use collector.netdev.device-exclude").Hidden().String() | ||
33 | ) | 36 | ) |
34 | 37 | ||
35 | type netDevCollector struct { | 38 | type netDevCollector struct { |
36 | subsystem string | 39 | subsystem string |
37 | ignoredDevicesPattern *regexp.Regexp | 40 | deviceExcludePattern *regexp.Regexp |
38 | acceptDevicesPattern *regexp.Regexp | 41 | deviceIncludePattern *regexp.Regexp |
39 | metricDescs map[string]*prometheus.Desc | 42 | metricDescs map[string]*prometheus.Desc |
40 | logger log.Logger | 43 | logger log.Logger |
41 | } | 44 | } |
42 | 45 | ||
43 | func init() { | 46 | func init() { |
@@ -46,31 +49,51 @@ func init() { | |||
46 | 49 | ||
47 | // NewNetDevCollector returns a new Collector exposing network device stats. | 50 | // NewNetDevCollector returns a new Collector exposing network device stats. |
48 | func NewNetDevCollector(logger log.Logger) (Collector, error) { | 51 | func NewNetDevCollector(logger log.Logger) (Collector, error) { |
49 | if *netdevIgnoredDevices != "" && *netdevAcceptDevices != "" { | 52 | if *oldNetdevDeviceInclude != "" { |
50 | return nil, errors.New("device-blacklist & accept-devices are mutually exclusive") | 53 | if *netdevDeviceInclude == "" { |
54 | level.Warn(logger).Log("msg", "--collector.netdev.device-whitelist is DEPRECATED and will be removed in 2.0.0, use --collector.netdev.device-include") | ||
55 | *netdevDeviceInclude = *oldNetdevDeviceInclude | ||
56 | } else { | ||
57 | return nil, errors.New("--collector.netdev.device-whitelist and --collector.netdev.device-include are mutually exclusive") | ||
58 | } | ||
59 | } | ||
60 | |||
61 | if *oldNetdevDeviceExclude != "" { | ||
62 | if *netdevDeviceExclude == "" { | ||
63 | level.Warn(logger).Log("msg", "--collector.netdev.device-blacklist is DEPRECATED and will be removed in 2.0.0, use --collector.netdev.device-exclude") | ||
64 | *netdevDeviceExclude = *oldNetdevDeviceExclude | ||
65 | } else { | ||
66 | return nil, errors.New("--collector.netdev.device-blacklist and --collector.netdev.device-exclude are mutually exclusive") | ||
67 | } | ||
68 | } | ||
69 | |||
70 | if *netdevDeviceExclude != "" && *netdevDeviceInclude != "" { | ||
71 | return nil, errors.New("device-exclude & device-include are mutually exclusive") | ||
51 | } | 72 | } |
52 | 73 | ||
53 | var ignorePattern *regexp.Regexp | 74 | var excludePattern *regexp.Regexp |
54 | if *netdevIgnoredDevices != "" { | 75 | if *netdevDeviceExclude != "" { |
55 | ignorePattern = regexp.MustCompile(*netdevIgnoredDevices) | 76 | level.Info(logger).Log("msg", "Parsed flag --collector.netdev.device-exclude", "flag", *netdevDeviceExclude) |
77 | excludePattern = regexp.MustCompile(*netdevDeviceExclude) | ||
56 | } | 78 | } |
57 | 79 | ||
58 | var acceptPattern *regexp.Regexp | 80 | var includePattern *regexp.Regexp |
59 | if *netdevAcceptDevices != "" { | 81 | if *netdevDeviceInclude != "" { |
60 | acceptPattern = regexp.MustCompile(*netdevAcceptDevices) | 82 | level.Info(logger).Log("msg", "Parsed Flag --collector.netdev.device-include", "flag", *netdevDeviceInclude) |
83 | includePattern = regexp.MustCompile(*netdevDeviceInclude) | ||
61 | } | 84 | } |
62 | 85 | ||
63 | return &netDevCollector{ | 86 | return &netDevCollector{ |
64 | subsystem: "network", | 87 | subsystem: "network", |
65 | ignoredDevicesPattern: ignorePattern, | 88 | deviceExcludePattern: excludePattern, |
66 | acceptDevicesPattern: acceptPattern, | 89 | deviceIncludePattern: includePattern, |
67 | metricDescs: map[string]*prometheus.Desc{}, | 90 | metricDescs: map[string]*prometheus.Desc{}, |
68 | logger: logger, | 91 | logger: logger, |
69 | }, nil | 92 | }, nil |
70 | } | 93 | } |
71 | 94 | ||
72 | func (c *netDevCollector) Update(ch chan<- prometheus.Metric) error { | 95 | func (c *netDevCollector) Update(ch chan<- prometheus.Metric) error { |
73 | netDev, err := getNetDevStats(c.ignoredDevicesPattern, c.acceptDevicesPattern, c.logger) | 96 | netDev, err := getNetDevStats(c.deviceExcludePattern, c.deviceIncludePattern, c.logger) |
74 | if err != nil { | 97 | if err != nil { |
75 | return fmt.Errorf("couldn't get netstats: %s", err) | 98 | return fmt.Errorf("couldn't get netstats: %s", err) |
76 | } | 99 | } |