diff --git a/cmd/telegraf/main.go b/cmd/telegraf/main.go index 7ba280fa1..1797be0e0 100644 --- a/cmd/telegraf/main.go +++ b/cmd/telegraf/main.go @@ -94,8 +94,9 @@ func deleteEmpty(s []string) []string { func runApp(args []string, outputBuffer io.Writer, pprof Server, c TelegrafConfig, m App) error { pluginFilterFlags := []cli.Flag{ &cli.StringFlag{ - Name: "section-filter", - Usage: "filter the sections to print, separator is ':'. Valid values are 'agent', 'global_tags', 'outputs', 'processors', 'aggregators' and 'inputs'", + Name: "section-filter", + Usage: "filter the sections to print, separator is ':'. " + + "Valid values are 'agent', 'global_tags', 'outputs', 'processors', 'aggregators' and 'inputs'", }, &cli.StringFlag{ Name: "input-filter", @@ -287,8 +288,9 @@ func runApp(args []string, outputBuffer io.Writer, pprof Server, c TelegrafConfi Usage: "run in quiet mode", }, &cli.BoolFlag{ - Name: "test", - Usage: "enable test mode: gather metrics, print them out, and exit. Note: Test mode only runs inputs, not processors, aggregators, or outputs", + Name: "test", + Usage: "enable test mode: gather metrics, print them out, and exit. " + + "Note: Test mode only runs inputs, not processors, aggregators, or outputs", }, // TODO: Change "deprecation-list, input-list, output-list" flags to become a subcommand "list" that takes // "input,output,aggregator,processor, deprecated" as parameters diff --git a/cmd/telegraf/printer.go b/cmd/telegraf/printer.go index 8cc2bee68..1aa1e830b 100644 --- a/cmd/telegraf/printer.go +++ b/cmd/telegraf/printer.go @@ -330,7 +330,8 @@ func printConfig(name string, p telegraf.PluginDescriber, op string, commented b if di.RemovalIn != "" { removalNote = " and will be removed in " + di.RemovalIn } - outputBuffer.Write([]byte(fmt.Sprintf("\n%s ## DEPRECATED: The '%s' plugin is deprecated in version %s%s, %s.", comment, name, di.Since, removalNote, di.Notice))) + outputBuffer.Write([]byte(fmt.Sprintf("\n%s ## DEPRECATED: The '%s' plugin is deprecated in version %s%s, %s.", + comment, name, di.Since, removalNote, di.Notice))) } sample := p.SampleConfig() diff --git a/config/config.go b/config/config.go index b0b18c322..db01972ba 100644 --- a/config/config.go +++ b/config/config.go @@ -479,7 +479,8 @@ func (c *Config) LoadConfigData(data []byte) error { pluginName) } if len(c.UnusedFields) > 0 { - return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", name, pluginName, subTable.Line, keys(c.UnusedFields)) + return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", + name, pluginName, subTable.Line, keys(c.UnusedFields)) } } case "inputs", "plugins": @@ -501,7 +502,8 @@ func (c *Config) LoadConfigData(data []byte) error { pluginName) } if len(c.UnusedFields) > 0 { - return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", name, pluginName, subTable.Line, keys(c.UnusedFields)) + return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", + name, pluginName, subTable.Line, keys(c.UnusedFields)) } } case "processors": @@ -518,7 +520,13 @@ func (c *Config) LoadConfigData(data []byte) error { pluginName) } if len(c.UnusedFields) > 0 { - return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", name, pluginName, subTable.Line, keys(c.UnusedFields)) + return fmt.Errorf( + "plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", + name, + pluginName, + subTable.Line, + keys(c.UnusedFields), + ) } } case "aggregators": @@ -535,7 +543,8 @@ func (c *Config) LoadConfigData(data []byte) error { pluginName) } if len(c.UnusedFields) > 0 { - return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", name, pluginName, subTable.Line, keys(c.UnusedFields)) + return fmt.Errorf("plugin %s.%s: line %d: configuration specified the fields %q, but they weren't used", + name, pluginName, subTable.Line, keys(c.UnusedFields)) } } // Assume it's an input for legacy config file support if no other diff --git a/config/config_test.go b/config/config_test.go index 03d3d5853..9bc5be432 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -368,12 +368,22 @@ func TestConfig_WrongFieldType(t *testing.T) { c := NewConfig() err := c.LoadConfig("./testdata/wrong_field_type.toml") require.Error(t, err, "invalid field type") - require.Equal(t, "error loading config file ./testdata/wrong_field_type.toml: error parsing http_listener_v2, line 2: (config.MockupInputPlugin.Port) cannot unmarshal TOML string into int", err.Error()) + require.Equal( + t, + "error loading config file ./testdata/wrong_field_type.toml: error parsing http_listener_v2, line 2: "+ + "(config.MockupInputPlugin.Port) cannot unmarshal TOML string into int", + err.Error(), + ) c = NewConfig() err = c.LoadConfig("./testdata/wrong_field_type2.toml") require.Error(t, err, "invalid field type2") - require.Equal(t, "error loading config file ./testdata/wrong_field_type2.toml: error parsing http_listener_v2, line 2: (config.MockupInputPlugin.Methods) cannot unmarshal TOML string into []string", err.Error()) + require.Equal( + t, + "error loading config file ./testdata/wrong_field_type2.toml: error parsing http_listener_v2, line 2: "+ + "(config.MockupInputPlugin.Methods) cannot unmarshal TOML string into []string", + err.Error(), + ) } func TestConfig_InlineTables(t *testing.T) { @@ -406,7 +416,11 @@ func TestConfig_BadOrdering(t *testing.T) { c := NewConfig() err := c.LoadConfig("./testdata/non_slice_slice.toml") require.Error(t, err, "bad ordering") - require.Equal(t, "error loading config file ./testdata/non_slice_slice.toml: error parsing http array, line 4: cannot unmarshal TOML array into string (need slice)", err.Error()) + require.Equal( + t, + "error loading config file ./testdata/non_slice_slice.toml: error parsing http array, line 4: cannot unmarshal TOML array into string (need slice)", + err.Error(), + ) } func TestConfig_AzureMonitorNamespacePrefix(t *testing.T) { @@ -482,7 +496,11 @@ func TestConfig_URLLikeFileName(t *testing.T) { if runtime.GOOS == "windows" { // The error file not found error message is different on Windows - require.Equal(t, "error loading config file http:##www.example.com.conf: open http:##www.example.com.conf: The system cannot find the file specified.", err.Error()) + require.Equal( + t, + "error loading config file http:##www.example.com.conf: open http:##www.example.com.conf: The system cannot find the file specified.", + err.Error(), + ) } else { require.Equal(t, "error loading config file http:##www.example.com.conf: open http:##www.example.com.conf: no such file or directory", err.Error()) } diff --git a/logger/logger.go b/logger/logger.go index 781816784..0cc455dad 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -127,7 +127,8 @@ func (t *telegrafLogCreator) CreateLogger(cfg LogConfig) (io.Writer, error) { case LogTargetFile: if cfg.Logfile != "" { var err error - if writer, err = rotate.NewFileWriter(cfg.Logfile, time.Duration(cfg.RotationInterval), int64(cfg.RotationMaxSize), cfg.RotationMaxArchives); err != nil { + if writer, err = + rotate.NewFileWriter(cfg.Logfile, time.Duration(cfg.RotationInterval), int64(cfg.RotationMaxSize), cfg.RotationMaxArchives); err != nil { log.Printf("E! Unable to open %s (%s), using stderr", cfg.Logfile, err) writer = defaultWriter } diff --git a/plugins/serializers/influx/influx_test.go b/plugins/serializers/influx/influx_test.go index f80718b3a..7aecda607 100644 --- a/plugins/serializers/influx/influx_test.go +++ b/plugins/serializers/influx/influx_test.go @@ -5,9 +5,10 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" + "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/metric" - "github.com/stretchr/testify/require" ) var tests = []struct { @@ -461,7 +462,19 @@ var tests = []struct { }, time.Unix(0, 1517620624000000000), ), - output: []byte("procstat,exe=bash,process_name=bash cpu_time=0i,cpu_time_guest=0,cpu_time_guest_nice=0,cpu_time_idle=0,cpu_time_iowait=0,cpu_time_irq=0,cpu_time_nice=0,cpu_time_soft_irq=0,cpu_time_steal=0,cpu_time_system=0,cpu_time_user=0.02,cpu_usage=0,involuntary_context_switches=2i,memory_data=1576960i,memory_locked=0i,memory_rss=5103616i,memory_stack=139264i,memory_swap=0i,memory_vms=21659648i,nice_priority=20i,num_fds=4i,num_threads=1i,pid=29417i,read_bytes=0i,read_count=259i,realtime_priority=0i,rlimit_cpu_time_hard=2147483647i,rlimit_cpu_time_soft=2147483647i,rlimit_file_locks_hard=2147483647i,rlimit_file_locks_soft=2147483647i,rlimit_memory_data_hard=2147483647i,rlimit_memory_data_soft=2147483647i,rlimit_memory_locked_hard=65536i,rlimit_memory_locked_soft=65536i,rlimit_memory_rss_hard=2147483647i,rlimit_memory_rss_soft=2147483647i,rlimit_memory_stack_hard=2147483647i,rlimit_memory_stack_soft=8388608i,rlimit_memory_vms_hard=2147483647i,rlimit_memory_vms_soft=2147483647i,rlimit_nice_priority_hard=0i,rlimit_nice_priority_soft=0i,rlimit_num_fds_hard=4096i,rlimit_num_fds_soft=1024i,rlimit_realtime_priority_hard=0i,rlimit_realtime_priority_soft=0i,rlimit_signals_pending_hard=78994i,rlimit_signals_pending_soft=78994i,signals_pending=0i,voluntary_context_switches=42i,write_bytes=106496i,write_count=35i 1517620624000000000\n"), + output: []byte( + "procstat,exe=bash,process_name=bash cpu_time=0i,cpu_time_guest=0,cpu_time_guest_nice=0,cpu_time_idle=0,cpu_time_iowait=0,cpu_time_irq=0," + + "cpu_time_nice=0,cpu_time_soft_irq=0,cpu_time_steal=0,cpu_time_system=0,cpu_time_user=0.02,cpu_usage=0,involuntary_context_switches=2i," + + "memory_data=1576960i,memory_locked=0i,memory_rss=5103616i,memory_stack=139264i,memory_swap=0i,memory_vms=21659648i,nice_priority=20i," + + "num_fds=4i,num_threads=1i,pid=29417i,read_bytes=0i,read_count=259i,realtime_priority=0i,rlimit_cpu_time_hard=2147483647i," + + "rlimit_cpu_time_soft=2147483647i,rlimit_file_locks_hard=2147483647i,rlimit_file_locks_soft=2147483647i,rlimit_memory_data_hard=2147483647i," + + "rlimit_memory_data_soft=2147483647i,rlimit_memory_locked_hard=65536i,rlimit_memory_locked_soft=65536i,rlimit_memory_rss_hard=2147483647i," + + "rlimit_memory_rss_soft=2147483647i,rlimit_memory_stack_hard=2147483647i,rlimit_memory_stack_soft=8388608i," + + "rlimit_memory_vms_hard=2147483647i,rlimit_memory_vms_soft=2147483647i,rlimit_nice_priority_hard=0i,rlimit_nice_priority_soft=0i," + + "rlimit_num_fds_hard=4096i,rlimit_num_fds_soft=1024i,rlimit_realtime_priority_hard=0i,rlimit_realtime_priority_soft=0i," + + "rlimit_signals_pending_hard=78994i,rlimit_signals_pending_soft=78994i,signals_pending=0i,voluntary_context_switches=42i," + + "write_bytes=106496i,write_count=35i 1517620624000000000\n", + ), }, } diff --git a/plugins/serializers/json/json_test.go b/plugins/serializers/json/json_test.go index 5b6ad9c15..df8f4ac29 100644 --- a/plugins/serializers/json/json_test.go +++ b/plugins/serializers/json/json_test.go @@ -191,7 +191,11 @@ func TestSerializeBatch(t *testing.T) { require.NoError(t, err) buf, err := s.SerializeBatch(metrics) require.NoError(t, err) - require.Equal(t, []byte(`{"metrics":[{"fields":{"value":42},"name":"cpu","tags":{},"timestamp":0},{"fields":{"value":42},"name":"cpu","tags":{},"timestamp":0}]}`), buf) + require.Equal( + t, + []byte(`{"metrics":[{"fields":{"value":42},"name":"cpu","tags":{},"timestamp":0},{"fields":{"value":42},"name":"cpu","tags":{},"timestamp":0}]}`), + buf, + ) } func TestSerializeBatchSkipInf(t *testing.T) { diff --git a/plugins/serializers/nowmetric/nowmetric.go b/plugins/serializers/nowmetric/nowmetric.go index fe0c4dc49..0462a79f1 100644 --- a/plugins/serializers/nowmetric/nowmetric.go +++ b/plugins/serializers/nowmetric/nowmetric.go @@ -69,7 +69,8 @@ func (s *serializer) createObject(metric telegraf.Metric) ([]byte, error) { /* ServiceNow Operational Intelligence supports an array of JSON objects. ** Following elements accepted in the request body: ** metric_type: The name of the metric - ** resource: Information about the resource for which metric data is being collected. In the example below, C:\ is the resource for which metric data is collected + ** resource: Information about the resource for which metric data is being collected. + In the example below, C:\ is the resource for which metric data is collected ** node: IP, FQDN, name of the CI, or host ** value: Value of the metric ** timestamp: Epoch timestamp of the metric in milliseconds diff --git a/plugins/serializers/nowmetric/nowmetric_test.go b/plugins/serializers/nowmetric/nowmetric_test.go index 05f68a231..ad462d230 100644 --- a/plugins/serializers/nowmetric/nowmetric_test.go +++ b/plugins/serializers/nowmetric/nowmetric_test.go @@ -26,7 +26,12 @@ func TestSerializeMetricFloat(t *testing.T) { var buf []byte buf, err := s.Serialize(m) require.NoError(t, err) - expS := []byte(fmt.Sprintf(`[{"metric_type":"usage_idle","resource":"","node":"","value":91.5,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"}]`, now.UnixNano()/int64(time.Millisecond))) + expS := []byte( + fmt.Sprintf( + `[{"metric_type":"usage_idle","resource":"","node":"","value":91.5,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"}]`, + now.UnixNano()/int64(time.Millisecond), + ), + ) require.Equal(t, string(expS), string(buf)) } @@ -90,7 +95,12 @@ func TestSerializeMetricInt(t *testing.T) { buf, err := s.Serialize(m) require.NoError(t, err) - expS := []byte(fmt.Sprintf(`[{"metric_type":"usage_idle","resource":"","node":"","value":90,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"}]`, now.UnixNano()/int64(time.Millisecond))) + expS := []byte( + fmt.Sprintf( + `[{"metric_type":"usage_idle","resource":"","node":"","value":90,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"}]`, + now.UnixNano()/int64(time.Millisecond), + ), + ) require.Equal(t, string(expS), string(buf)) } @@ -133,7 +143,14 @@ func TestSerializeMultiFields(t *testing.T) { buf, err := s.Serialize(m) require.NoError(t, err) - expS := []byte(fmt.Sprintf(`[{"metric_type":"usage_idle","resource":"","node":"","value":90,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"},{"metric_type":"usage_total","resource":"","node":"","value":8559615,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"}]`, now.UnixNano()/int64(time.Millisecond), now.UnixNano()/int64(time.Millisecond))) + expS := []byte( + fmt.Sprintf( + `[{"metric_type":"usage_idle","resource":"","node":"","value":90,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"},`+ + `{"metric_type":"usage_total","resource":"","node":"","value":8559615,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"}]`, + now.UnixNano()/int64(time.Millisecond), + now.UnixNano()/int64(time.Millisecond), + ), + ) require.Equal(t, string(expS), string(buf)) } @@ -151,7 +168,12 @@ func TestSerializeMetricWithEscapes(t *testing.T) { buf, err := s.Serialize(m) require.NoError(t, err) - expS := []byte(fmt.Sprintf(`[{"metric_type":"U,age=Idle","resource":"","node":"","value":90,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"}]`, now.UnixNano()/int64(time.Millisecond))) + expS := []byte( + fmt.Sprintf( + `[{"metric_type":"U,age=Idle","resource":"","node":"","value":90,"timestamp":%d,"ci2metric_id":null,"source":"Telegraf"}]`, + now.UnixNano()/int64(time.Millisecond), + ), + ) require.Equal(t, string(expS), string(buf)) } @@ -168,5 +190,12 @@ func TestSerializeBatch(t *testing.T) { s, _ := NewSerializer() buf, err := s.SerializeBatch(metrics) require.NoError(t, err) - require.Equal(t, []byte(`[{"metric_type":"value","resource":"","node":"","value":42,"timestamp":0,"ci2metric_id":null,"source":"Telegraf"},{"metric_type":"value","resource":"","node":"","value":42,"timestamp":0,"ci2metric_id":null,"source":"Telegraf"}]`), buf) + require.Equal( + t, + []byte( + `[{"metric_type":"value","resource":"","node":"","value":42,"timestamp":0,"ci2metric_id":null,"source":"Telegraf"},`+ + `{"metric_type":"value","resource":"","node":"","value":42,"timestamp":0,"ci2metric_id":null,"source":"Telegraf"}]`, + ), + buf, + ) } diff --git a/plugins/serializers/registry.go b/plugins/serializers/registry.go index 74dabaaef..776b1737b 100644 --- a/plugins/serializers/registry.go +++ b/plugins/serializers/registry.go @@ -148,7 +148,14 @@ func NewSerializer(config *Config) (Serializer, error) { case "influx": serializer, err = NewInfluxSerializerConfig(config), nil case "graphite": - serializer, err = NewGraphiteSerializer(config.Prefix, config.Template, config.GraphiteTagSupport, config.GraphiteTagSanitizeMode, config.GraphiteSeparator, config.Templates) + serializer, err = NewGraphiteSerializer( + config.Prefix, + config.Template, + config.GraphiteTagSupport, + config.GraphiteTagSanitizeMode, + config.GraphiteSeparator, + config.Templates, + ) case "json": serializer, err = NewJSONSerializer(config.TimestampUnits, config.TimestampFormat, config.Transformation) case "splunkmetric": @@ -158,7 +165,12 @@ func NewSerializer(config *Config) (Serializer, error) { case "carbon2": serializer, err = NewCarbon2Serializer(config.Carbon2Format, config.Carbon2SanitizeReplaceChar) case "wavefront": - serializer, err = NewWavefrontSerializer(config.Prefix, config.WavefrontUseStrict, config.WavefrontSourceOverride, config.WavefrontDisablePrefixConversion), nil + serializer, err = NewWavefrontSerializer( + config.Prefix, + config.WavefrontUseStrict, + config.WavefrontSourceOverride, + config.WavefrontDisablePrefixConversion, + ), nil case "prometheus": serializer, err = NewPrometheusSerializer(config), nil case "prometheusremotewrite": diff --git a/plugins/serializers/splunkmetric/splunkmetric_test.go b/plugins/serializers/splunkmetric/splunkmetric_test.go index e8a74b72b..e6c4bed84 100644 --- a/plugins/serializers/splunkmetric/splunkmetric_test.go +++ b/plugins/serializers/splunkmetric/splunkmetric_test.go @@ -215,7 +215,8 @@ func TestSerializeBatchHec(t *testing.T) { buf, err := s.SerializeBatch(metrics) require.NoError(t, err) - expS := `{"time":0,"event":"metric","fields":{"_value":42,"metric_name":"cpu.value"}}{"time":0,"event":"metric","fields":{"_value":92,"metric_name":"cpu.value"}}` + expS := `{"time":0,"event":"metric","fields":{"_value":42,"metric_name":"cpu.value"}}` + + `{"time":0,"event":"metric","fields":{"_value":92,"metric_name":"cpu.value"}}` require.Equal(t, expS, string(buf)) } diff --git a/tools/package_lxd_test/container.go b/tools/package_lxd_test/container.go index 4f7679dd5..ddd8c98f1 100644 --- a/tools/package_lxd_test/container.go +++ b/tools/package_lxd_test/container.go @@ -141,16 +141,23 @@ func (c *Container) configureApt() error { err = c.client.Exec( c.Name, - "bash", "-c", "--", - "echo '23a1c8836f0afc5ed24e0486339d7cc8f6790b83886c4c96995b88a061c5bb5d influxdb.key' | sha256sum -c && cat influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null", + "bash", + "-c", + "--", + "echo '23a1c8836f0afc5ed24e0486339d7cc8f6790b83886c4c96995b88a061c5bb5d influxdb.key' | "+ + "sha256sum -c && cat influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null", ) if err != nil { return err } - err = c.client.Exec(c.Name, - "bash", "-c", "--", - "echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main' | tee /etc/apt/sources.list.d/influxdata.list", + err = c.client.Exec( + c.Name, + "bash", + "-c", + "--", + "echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main' | "+ + "tee /etc/apt/sources.list.d/influxdata.list", ) if err != nil { return err