Skip to content

Commit

Permalink
Add support for glob patterns in net input plugin (#3140)
Browse files Browse the repository at this point in the history
  • Loading branch information
bobmshannon authored and danielnelson committed Nov 29, 2017
1 parent 24d82ae commit beb9d75
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
6 changes: 4 additions & 2 deletions plugins/inputs/system/NET_README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ This plugin gathers metrics about network interface and protocol usage (Linux on
[[inputs.net]]
## By default, telegraf gathers stats from any up interface (excluding loopback)
## Setting interfaces will tell it to gather these explicit interfaces,
## regardless of status.
## regardless of status. When specifying an interface, glob-style
## patterns are also supported.
##
# interfaces = ["eth*", "enp0s[0-1]", "lo"]
##
# interfaces = ["eth0"]
```

### Measurements & Fields:
Expand Down
17 changes: 11 additions & 6 deletions plugins/inputs/system/net.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ import (
"strings"

"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/filter"
"github.com/influxdata/telegraf/plugins/inputs"
)

type NetIOStats struct {
ps PS
filter filter.Filter
ps PS

skipChecks bool
Interfaces []string
Expand Down Expand Up @@ -38,15 +40,18 @@ func (s *NetIOStats) Gather(acc telegraf.Accumulator) error {
return fmt.Errorf("error getting net io info: %s", err)
}

if s.filter == nil {
if s.filter, err = filter.Compile(s.Interfaces); err != nil {
return fmt.Errorf("error compiling filter: %s", err)
}
}

for _, io := range netio {
if len(s.Interfaces) != 0 {
var found bool

for _, name := range s.Interfaces {
if name == io.Name {
found = true
break
}
if s.filter.Match(io.Name) {
found = true
}

if !found {
Expand Down

0 comments on commit beb9d75

Please sign in to comment.