diff --git a/cmd/telegraf/telegraf.go b/cmd/telegraf/telegraf.go index 51a1a7bbf..f57ff385c 100644 --- a/cmd/telegraf/telegraf.go +++ b/cmd/telegraf/telegraf.go @@ -42,6 +42,10 @@ var fOutputFilters = flag.String("output-filter", "", "filter the outputs to enable, separator is :") var fOutputList = flag.Bool("output-list", false, "print available output plugins.") +var fAggregatorFilters = flag.String("aggregator-filter", "", + "filter the aggregators to enable, separator is :") +var fProcessorFilters = flag.String("processor-filter", "", + "filter the processors to enable, separator is :") var fUsage = flag.String("usage", "", "print usage for a plugin, ie, 'telegraf -usage mysql'") var fService = flag.String("service", "", @@ -78,9 +82,9 @@ The flags are: -sample-config print out full sample configuration to stdout -config-directory directory containing additional *.conf files -input-filter filter the input plugins to enable, separator is : - -input-list print all the plugins inputs -output-filter filter the output plugins to enable, separator is : - -output-list print all the available outputs + -aggregator-filter filter the aggregator plugins to enable, separator is : + -processor-filter filter the processor plugins to enable, separator is : -usage print usage for a plugin, ie, 'telegraf -usage mysql' -debug print metrics as they're generated to stdout -quiet run in quiet mode @@ -143,6 +147,16 @@ func reloadLoop(stop chan struct{}, s service.Service) { outputFilter := strings.TrimSpace(*fOutputFilters) outputFilters = strings.Split(":"+outputFilter+":", ":") } + var aggregatorFilters []string + if *fAggregatorFilters != "" { + aggregatorFilter := strings.TrimSpace(*fAggregatorFilters) + aggregatorFilters = strings.Split(":"+aggregatorFilter+":", ":") + } + var processorFilters []string + if *fProcessorFilters != "" { + processorFilter := strings.TrimSpace(*fProcessorFilters) + processorFilters = strings.Split(":"+processorFilter+":", ":") + } if len(args) > 0 { switch args[0] { @@ -150,7 +164,12 @@ func reloadLoop(stop chan struct{}, s service.Service) { fmt.Printf("Telegraf v%s (git: %s %s)\n", version, branch, commit) return case "config": - config.PrintSampleConfig(inputFilters, outputFilters) + config.PrintSampleConfig( + inputFilters, + outputFilters, + aggregatorFilters, + processorFilters, + ) return } } @@ -173,7 +192,12 @@ func reloadLoop(stop chan struct{}, s service.Service) { fmt.Printf("Telegraf v%s (git: %s %s)\n", version, branch, commit) return case *fSampleConfig: - config.PrintSampleConfig(inputFilters, outputFilters) + config.PrintSampleConfig( + inputFilters, + outputFilters, + aggregatorFilters, + processorFilters, + ) return case *fUsage != "": if err := config.PrintInputConfig(*fUsage); err != nil { diff --git a/internal/config/config.go b/internal/config/config.go index a38af7924..b6319c7fc 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -284,7 +284,12 @@ var serviceInputHeader = ` ` // PrintSampleConfig prints the sample config -func PrintSampleConfig(inputFilters []string, outputFilters []string) { +func PrintSampleConfig( + inputFilters []string, + outputFilters []string, + aggregatorFilters []string, + processorFilters []string, +) { fmt.Printf(header) // print output plugins @@ -305,21 +310,29 @@ func PrintSampleConfig(inputFilters []string, outputFilters []string) { // print processor plugins fmt.Printf(processorHeader) - pnames := []string{} - for pname := range processors.Processors { - pnames = append(pnames, pname) + if len(processorFilters) != 0 { + printFilteredProcessors(processorFilters, false) + } else { + pnames := []string{} + for pname := range processors.Processors { + pnames = append(pnames, pname) + } + sort.Strings(pnames) + printFilteredProcessors(pnames, true) } - sort.Strings(pnames) - printFilteredProcessors(pnames, true) // pring aggregator plugins fmt.Printf(aggregatorHeader) - pnames = []string{} - for pname := range aggregators.Aggregators { - pnames = append(pnames, pname) + if len(aggregatorFilters) != 0 { + printFilteredAggregators(aggregatorFilters, false) + } else { + pnames := []string{} + for pname := range aggregators.Aggregators { + pnames = append(pnames, pname) + } + sort.Strings(pnames) + printFilteredAggregators(pnames, true) } - sort.Strings(pnames) - printFilteredAggregators(pnames, true) // print input plugins fmt.Printf(inputHeader)