From 46f4be88a6481859ea1306e28c605497054b0090 Mon Sep 17 00:00:00 2001 From: Cameron Sparr Date: Mon, 2 May 2016 12:07:17 -0600 Subject: [PATCH] Revert "exec plugin: allow using glob pattern in command list" This reverts commit 6381efa7ced31e772b3b128f84706dbb31a070f0. --- CHANGELOG.md | 3 --- plugins/inputs/exec/README.md | 29 ++++++++++------------------- plugins/inputs/exec/exec.go | 23 +++++------------------ 3 files changed, 15 insertions(+), 40 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9803116e..aae65b99a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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! - [#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 -- [#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 diff --git a/plugins/inputs/exec/README.md b/plugins/inputs/exec/README.md index bcb92ef29..a75ae7856 100644 --- a/plugins/inputs/exec/README.md +++ b/plugins/inputs/exec/README.md @@ -6,32 +6,22 @@ Please also see: [Telegraf Input Data Formats](https://github.com/influxdata/tel #### Configuration -In this example a script called ```/tmp/test.sh```, a script called ```/tmp/test2.sh```, and -all scripts matching glob pattern ```/tmp/collect_*.sh``` are configured for ```[[inputs.exec]]``` -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. +In this example a script called ```/tmp/test.sh``` and a script called ```/tmp/test2.sh``` +are configured for ```[[inputs.exec]]``` in JSON format. ``` # Read flattened metrics from one or more commands that output JSON to stdout [[inputs.exec]] - ## Full path to executable with parameters, - ## or a glob pattern to run all matching files. - ## 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"] + # Shell/commands array + commands = ["/tmp/test.sh", "/tmp/test2.sh"] - ## Timeout for each command to complete. - timeout = "5s" - - ## 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 to consume. + # NOTE json only reads numerical measurements, strings and booleans are ignored. 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 ## If matching multiple measurement files, this string will be used to join the matched values. #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. More detail information about templates, please refer to [The graphite Input](https://github.com/influxdata/influxdb/blob/master/services/graphite/README.md) + diff --git a/plugins/inputs/exec/exec.go b/plugins/inputs/exec/exec.go index b739fc4c6..c1b2092e8 100644 --- a/plugins/inputs/exec/exec.go +++ b/plugins/inputs/exec/exec.go @@ -4,7 +4,6 @@ import ( "bytes" "fmt" "os/exec" - "path/filepath" "sync" "syscall" "time" @@ -19,11 +18,8 @@ import ( ) const sampleConfig = ` - ## Full path to executable with parameters, - ## or a glob pattern to run all matching files. - ## 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"] + ## Commands array + commands = ["/tmp/test.sh", "/usr/bin/mycollector --foo=bar"] ## Timeout for each command to complete. timeout = "5s" @@ -154,19 +150,10 @@ func (e *Exec) Gather(acc telegraf.Accumulator) error { e.Command = "" } - commands := make([]string, 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(e.Commands)) - e.errChan = make(chan error, len(commands)) - - e.wg.Add(len(commands)) - for _, command := range commands { + e.wg.Add(len(e.Commands)) + for _, command := range e.Commands { go e.ProcessCommand(command, acc) } e.wg.Wait()