aboutsummaryrefslogtreecommitdiff
path: root/collector/netdev_common.go
diff options
context:
space:
mode:
Diffstat (limited to 'collector/netdev_common.go')
-rw-r--r--collector/netdev_common.go65
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
30var ( 31var (
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
35type netDevCollector struct { 38type 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
43func init() { 46func 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.
48func NewNetDevCollector(logger log.Logger) (Collector, error) { 51func 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
72func (c *netDevCollector) Update(ch chan<- prometheus.Metric) error { 95func (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 }