Skip to content

Commit c38e1e2

Browse files
binjip978discordianfish
authored andcommitted
qdisk-linux: Add exclude and include flags for interface name
Signed-off-by: binjip978 <[email protected]> Signed-off-by: Johannes 'fish' Ziemke <[email protected]>
1 parent 0b82f40 commit c38e1e2

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

collector/qdisc_linux.go

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package collector
1818

1919
import (
2020
"encoding/json"
21+
"fmt"
2122
"io/ioutil"
2223
"path/filepath"
2324

@@ -28,18 +29,21 @@ import (
2829
)
2930

3031
type qdiscStatCollector struct {
31-
bytes typedDesc
32-
packets typedDesc
33-
drops typedDesc
34-
requeues typedDesc
35-
overlimits typedDesc
36-
qlength typedDesc
37-
backlog typedDesc
38-
logger log.Logger
32+
logger log.Logger
33+
deviceFilter deviceFilter
34+
bytes typedDesc
35+
packets typedDesc
36+
drops typedDesc
37+
requeues typedDesc
38+
overlimits typedDesc
39+
qlength typedDesc
40+
backlog typedDesc
3941
}
4042

4143
var (
42-
collectorQdisc = kingpin.Flag("collector.qdisc.fixtures", "test fixtures to use for qdisc collector end-to-end testing").Default("").String()
44+
collectorQdisc = kingpin.Flag("collector.qdisc.fixtures", "test fixtures to use for qdisc collector end-to-end testing").Default("").String()
45+
collectorQdiskDeviceInclude = kingpin.Flag("collector.qdisk.device-include", "Regexp of qdisk devices to include (mutually exclusive to device-exclude).").String()
46+
collectorQdiskDeviceExclude = kingpin.Flag("collector.qdisk.device-exclude", "Regexp of qdisk devices to exclude (mutually exclusive to device-include).").String()
4347
)
4448

4549
func init() {
@@ -48,6 +52,10 @@ func init() {
4852

4953
// NewQdiscStatCollector returns a new Collector exposing queuing discipline statistics.
5054
func NewQdiscStatCollector(logger log.Logger) (Collector, error) {
55+
if *collectorQdiskDeviceExclude != "" && *collectorQdiskDeviceInclude != "" {
56+
return nil, fmt.Errorf("collector.qdisk.device-include and collector.qdisk.device-exclude are mutaly exclusive")
57+
}
58+
5159
return &qdiscStatCollector{
5260
bytes: typedDesc{prometheus.NewDesc(
5361
prometheus.BuildFQName(namespace, "qdisc", "bytes_total"),
@@ -84,7 +92,8 @@ func NewQdiscStatCollector(logger log.Logger) (Collector, error) {
8492
"Number of bytes currently in queue to be sent.",
8593
[]string{"device", "kind"}, nil,
8694
), prometheus.GaugeValue},
87-
logger: logger,
95+
logger: logger,
96+
deviceFilter: newDeviceFilter(*collectorQdiskDeviceExclude, *collectorQdiskDeviceExclude),
8897
}, nil
8998
}
9099

@@ -122,6 +131,10 @@ func (c *qdiscStatCollector) Update(ch chan<- prometheus.Metric) error {
122131
continue
123132
}
124133

134+
if c.deviceFilter.ignored(msg.IfaceName) {
135+
continue
136+
}
137+
125138
ch <- c.bytes.mustNewConstMetric(float64(msg.Bytes), msg.IfaceName, msg.Kind)
126139
ch <- c.packets.mustNewConstMetric(float64(msg.Packets), msg.IfaceName, msg.Kind)
127140
ch <- c.drops.mustNewConstMetric(float64(msg.Drops), msg.IfaceName, msg.Kind)

end-to-end-test.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ fi
128128
--collector.textfile.directory="collector/fixtures/textfile/two_metric_files/" \
129129
--collector.wifi.fixtures="collector/fixtures/wifi" \
130130
--collector.qdisc.fixtures="collector/fixtures/qdisc/" \
131+
--collector.qdisk.device-include="(wlan0|eth0)" \
131132
--collector.arp.device-exclude="nope" \
132133
--collector.netclass.ignored-devices="(dmz|int)" \
133134
--collector.netclass.ignore-invalid-speed \

0 commit comments

Comments
 (0)