Revert "exec plugin: allow using glob pattern in command list"

This reverts commit 6381efa7ce.
This commit is contained in:
Cameron Sparr 2016-05-02 12:07:17 -06:00
parent 6381efa7ce
commit 46f4be88a6
3 changed files with 15 additions and 40 deletions

View File

@ -68,9 +68,6 @@ based on _prefix_ in addition to globs. This means that a filter like
- [#1107](https://github.com/influxdata/telegraf/issues/1107): Support lustre2 job stats. Thanks @hanleyja! - [#1107](https://github.com/influxdata/telegraf/issues/1107): Support lustre2 job stats. Thanks @hanleyja!
- [#1122](https://github.com/influxdata/telegraf/pull/1122): Support setting config path through env variable and default paths. - [#1122](https://github.com/influxdata/telegraf/pull/1122): Support setting config path through env variable and default paths.
- [#1128](https://github.com/influxdata/telegraf/pull/1128): MongoDB jumbo chunks metric for MongoDB input plugin - [#1128](https://github.com/influxdata/telegraf/pull/1128): MongoDB jumbo chunks metric for MongoDB input plugin
- [#1110](https://github.com/influxdata/telegraf/pull/1110): Sanitize * to - in graphite serializer. Thanks @goodeggs!
- [#1118](https://github.com/influxdata/telegraf/pull/1118): Sanitize Counter names for `win_perf_counters` input.
- [#1127](https://github.com/influxdata/telegraf/pull/1127): Support for glob patterns in exec plugin commands configuration.
### Bugfixes ### Bugfixes

View File

@ -6,32 +6,22 @@ Please also see: [Telegraf Input Data Formats](https://github.com/influxdata/tel
#### Configuration #### Configuration
In this example a script called ```/tmp/test.sh```, a script called ```/tmp/test2.sh```, and In this example a script called ```/tmp/test.sh``` and a script called ```/tmp/test2.sh```
all scripts matching glob pattern ```/tmp/collect_*.sh``` are configured for ```[[inputs.exec]]``` are configured for ```[[inputs.exec]]``` in JSON format.
in JSON format. Glob patterns are matched on every run, so adding new scripts that match the pattern
will cause them to be picked up immediately.
``` ```
# Read flattened metrics from one or more commands that output JSON to stdout # Read flattened metrics from one or more commands that output JSON to stdout
[[inputs.exec]] [[inputs.exec]]
## Full path to executable with parameters, # Shell/commands array
## or a glob pattern to run all matching files. commands = ["/tmp/test.sh", "/tmp/test2.sh"]
## the glob pattern will be run at every interval, so new files will
## automatically be picked up.
commands = ["/tmp/test.sh", "/usr/bin/mycollector --foo=bar", "/tmp/collect_*.sh"]
## Timeout for each command to complete. # Data format to consume.
timeout = "5s" # NOTE json only reads numerical measurements, strings and booleans are ignored.
## measurement name suffix (for separating different commands)
name_suffix = "_mycollector"
## Data format to consume.
## Each data format has it's own unique set of configuration options, read
## more about them here:
## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
data_format = "json" data_format = "json"
# measurement name suffix (for separating different commands)
name_suffix = "_mycollector"
## Below configuration will be used for data_format = "graphite", can be ignored for other data_format ## Below configuration will be used for data_format = "graphite", can be ignored for other data_format
## If matching multiple measurement files, this string will be used to join the matched values. ## If matching multiple measurement files, this string will be used to join the matched values.
#separator = "." #separator = "."
@ -190,3 +180,4 @@ sensu.metric.net.server0.eth0.rx_dropped 0 1444234982
The templates configuration will be used to parse the graphite metrics to support influxdb/opentsdb tagging store engines. The templates configuration will be used to parse the graphite metrics to support influxdb/opentsdb tagging store engines.
More detail information about templates, please refer to [The graphite Input](https://github.com/influxdata/influxdb/blob/master/services/graphite/README.md) More detail information about templates, please refer to [The graphite Input](https://github.com/influxdata/influxdb/blob/master/services/graphite/README.md)

View File

@ -4,7 +4,6 @@ import (
"bytes" "bytes"
"fmt" "fmt"
"os/exec" "os/exec"
"path/filepath"
"sync" "sync"
"syscall" "syscall"
"time" "time"
@ -19,11 +18,8 @@ import (
) )
const sampleConfig = ` const sampleConfig = `
## Full path to executable with parameters, ## Commands array
## or a glob pattern to run all matching files. commands = ["/tmp/test.sh", "/usr/bin/mycollector --foo=bar"]
## the glob pattern will be run at every interval, so new files will
## automatically be picked up.
commands = ["/tmp/test.sh", "/usr/bin/collector --foo=bar", "/tmp/collect_*.sh"]
## Timeout for each command to complete. ## Timeout for each command to complete.
timeout = "5s" timeout = "5s"
@ -154,19 +150,10 @@ func (e *Exec) Gather(acc telegraf.Accumulator) error {
e.Command = "" e.Command = ""
} }
commands := make([]string, len(e.Commands)) e.errChan = make(chan error, len(e.Commands))
for _, pattern := range e.Commands {
matches, err := filepath.Glob(pattern)
if err != nil {
return err
}
commands = append(commands, matches...)
}
e.errChan = make(chan error, len(commands)) e.wg.Add(len(e.Commands))
for _, command := range e.Commands {
e.wg.Add(len(commands))
for _, command := range commands {
go e.ProcessCommand(command, acc) go e.ProcessCommand(command, acc)
} }
e.wg.Wait() e.wg.Wait()