From 18cdb1a99e51b75003272b745e148e14d284947f Mon Sep 17 00:00:00 2001 From: Sven Rebhan <36194019+srebhan@users.noreply.github.com> Date: Thu, 5 Dec 2024 15:32:10 +0100 Subject: [PATCH] chore(serializers)!: Remove old-style creation (#15971) --- CHANGELOG.md | 4 + config/config.go | 9 - config/config_test.go | 125 -------------- models/running_serializer.go | 5 +- plugins/outputs/amqp/amqp.go | 5 +- .../azure_data_explorer.go | 3 +- plugins/outputs/cloud_pubsub/cloud_pubsub.go | 5 +- plugins/outputs/event_hubs/event_hubs.go | 5 +- plugins/outputs/exec/exec.go | 5 +- plugins/outputs/execd/execd.go | 5 +- plugins/outputs/file/file.go | 5 +- plugins/outputs/http/http.go | 5 +- plugins/outputs/http/http_test.go | 3 +- plugins/outputs/kafka/kafka.go | 5 +- plugins/outputs/kinesis/kinesis.go | 5 +- plugins/outputs/kinesis/kinesis_test.go | 13 +- plugins/outputs/mqtt/mqtt.go | 5 +- plugins/outputs/nats/nats.go | 5 +- plugins/outputs/nsq/nsq.go | 5 +- .../outputs/socket_writer/socket_writer.go | 9 +- .../socket_writer/socket_writer_test.go | 12 +- plugins/outputs/stomp/stomp.go | 5 +- plugins/outputs/sumologic/sumologic.go | 7 +- plugins/outputs/websocket/websocket.go | 5 +- plugins/processors/execd/execd.go | 3 +- plugins/serializers/binary/binary.go | 2 +- plugins/serializers/carbon2/carbon2.go | 10 +- .../serializers/cloudevents/cloudevents.go | 2 +- plugins/serializers/csv/csv.go | 12 +- plugins/serializers/graphite/graphite.go | 14 +- plugins/serializers/influx/influx.go | 11 +- plugins/serializers/json/json.go | 13 +- plugins/serializers/msgpack/msgpack.go | 7 +- plugins/serializers/nowmetric/nowmetric.go | 7 +- plugins/serializers/prometheus/prometheus.go | 12 +- .../prometheusremotewrite.go | 10 +- plugins/serializers/registry.go | 163 +----------------- .../serializers/splunkmetric/splunkmetric.go | 11 +- plugins/serializers/template/template.go | 2 +- plugins/serializers/wavefront/wavefront.go | 12 +- 40 files changed, 68 insertions(+), 483 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32648b4f5..ceae796d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,10 @@ delivery state update of un-parseable messages from `ACK` to `NACK` without requeueing. This way, those messages are not lost and can optionally be handled using a dead-letter exchange by other means. +- Removal of old-style serializer creation. This should not directly affect + users as it is an API change. All serializers in Telegraf are already ported + to the new framework. If you experience any issues with not being able to + create serializers let us know! ### Bugfixes diff --git a/config/config.go b/config/config.go index d80033a60..3ae202531 100644 --- a/config/config.go +++ b/config/config.go @@ -1212,15 +1212,6 @@ func (c *Config) addOutput(name string, table *ast.Table) error { return err } t.SetSerializer(serializer) - } else if t, ok := output.(serializers.SerializerOutput); ok { - // Keep the old interface for backward compatibility - // DEPRECATED: Please switch your plugin to telegraf.Serializers - missThreshold = 1 - serializer, err := c.addSerializer(name, table) - if err != nil { - return err - } - t.SetSerializer(serializer) } if t, ok := output.(telegraf.SerializerFuncPlugin); ok { diff --git a/config/config_test.go b/config/config_test.go index 7af2a790a..ace97545d 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -630,7 +630,6 @@ func TestConfig_SerializerInterfaceNewFormat(t *testing.T) { require.NoError(t, c.LoadConfig("./testdata/serializers_new.toml")) require.Len(t, c.Outputs, len(formats)) - cfg := serializers.Config{} override := map[string]struct { param map[string]interface{} mask []string @@ -638,20 +637,12 @@ func TestConfig_SerializerInterfaceNewFormat(t *testing.T) { expected := make([]telegraf.Serializer, 0, len(formats)) for _, format := range formats { - formatCfg := &cfg - formatCfg.DataFormat = format - logger := logging.New("serializers", format, "test") var serializer telegraf.Serializer if creator, found := serializers.Serializers[format]; found { t.Logf("new-style %q", format) serializer = creator() - } else { - t.Logf("old-style %q", format) - var err error - serializer, err = serializers.NewSerializer(formatCfg) - require.NoErrorf(t, err, "No serializer for format %q", format) } if settings, found := override[format]; found { @@ -703,98 +694,6 @@ func TestConfig_SerializerInterfaceNewFormat(t *testing.T) { } } -func TestConfig_SerializerInterfaceOldFormat(t *testing.T) { - formats := []string{ - "carbon2", - "csv", - "graphite", - "influx", - "json", - "msgpack", - "nowmetric", - "prometheus", - "prometheusremotewrite", - "splunkmetric", - "wavefront", - } - - c := config.NewConfig() - require.NoError(t, c.LoadConfig("./testdata/serializers_old.toml")) - require.Len(t, c.Outputs, len(formats)) - - cfg := serializers.Config{} - override := map[string]struct { - param map[string]interface{} - mask []string - }{} - - expected := make([]telegraf.Serializer, 0, len(formats)) - for _, format := range formats { - formatCfg := &cfg - formatCfg.DataFormat = format - - logger := logging.New("serializers", format, "test") - - var serializer serializers.Serializer - if creator, found := serializers.Serializers[format]; found { - t.Logf("new-style %q", format) - serializer = creator() - } else { - t.Logf("old-style %q", format) - var err error - serializer, err = serializers.NewSerializer(formatCfg) - require.NoErrorf(t, err, "No serializer for format %q", format) - } - - if settings, found := override[format]; found { - s := reflect.Indirect(reflect.ValueOf(serializer)) - for key, value := range settings.param { - v := reflect.ValueOf(value) - s.FieldByName(key).Set(v) - } - } - models.SetLoggerOnPlugin(serializer, logger) - if s, ok := serializer.(telegraf.Initializer); ok { - require.NoError(t, s.Init()) - } - expected = append(expected, serializer) - } - require.Len(t, expected, len(formats)) - - actual := make([]interface{}, 0) - for _, plugin := range c.Outputs { - output, ok := plugin.Output.(*MockupOutputPluginSerializerOld) - require.True(t, ok) - // Get the parser set with 'SetParser()' - if p, ok := output.Serializer.(*models.RunningSerializer); ok { - actual = append(actual, p.Serializer) - } else { - actual = append(actual, output.Serializer) - } - } - require.Len(t, actual, len(formats)) - - for i, format := range formats { - // Determine the underlying type of the serializer - stype := reflect.Indirect(reflect.ValueOf(expected[i])).Interface() - // Ignore all unexported fields and fields not relevant for functionality - options := []cmp.Option{ - cmpopts.IgnoreUnexported(stype), - cmpopts.IgnoreUnexported(reflect.Indirect(reflect.ValueOf(serializers_prometheus.MetricTypes{})).Interface()), - cmpopts.IgnoreTypes(sync.Mutex{}, regexp.Regexp{}), - cmpopts.IgnoreInterfaces(struct{ telegraf.Logger }{}), - } - if settings, found := override[format]; found { - options = append(options, cmpopts.IgnoreFields(stype, settings.mask...)) - } - - // Do a manual comparison as require.EqualValues will also work on unexported fields - // that cannot be cleared or ignored. - diff := cmp.Diff(expected[i], actual[i], options...) - require.Emptyf(t, diff, "Difference in SetSerializer() for %q", format) - } -} - func TestConfig_ParserInterface(t *testing.T) { formats := []string{ "collectd", @@ -1503,27 +1402,6 @@ func (m *MockupOutputPlugin) Write(_ []telegraf.Metric) error { return nil } -// Mockup OUTPUT plugin for serializer testing to avoid cyclic dependencies -type MockupOutputPluginSerializerOld struct { - Serializer serializers.Serializer -} - -func (m *MockupOutputPluginSerializerOld) SetSerializer(s serializers.Serializer) { - m.Serializer = s -} -func (*MockupOutputPluginSerializerOld) Connect() error { - return nil -} -func (*MockupOutputPluginSerializerOld) Close() error { - return nil -} -func (*MockupOutputPluginSerializerOld) SampleConfig() string { - return "Mockup test output plugin" -} -func (*MockupOutputPluginSerializerOld) Write(_ []telegraf.Metric) error { - return nil -} - type MockupOutputPluginSerializerNew struct { Serializer telegraf.Serializer } @@ -1662,7 +1540,4 @@ func init() { outputs.Add("serializer_test_new", func() telegraf.Output { return &MockupOutputPluginSerializerNew{} }) - outputs.Add("serializer_test_old", func() telegraf.Output { - return &MockupOutputPluginSerializerOld{} - }) } diff --git a/models/running_serializer.go b/models/running_serializer.go index d7d021795..e2efa0092 100644 --- a/models/running_serializer.go +++ b/models/running_serializer.go @@ -5,7 +5,6 @@ import ( "github.com/influxdata/telegraf" logging "github.com/influxdata/telegraf/logger" - "github.com/influxdata/telegraf/plugins/serializers" "github.com/influxdata/telegraf/selfstat" ) @@ -19,7 +18,7 @@ type SerializerConfig struct { } type RunningSerializer struct { - Serializer serializers.Serializer + Serializer telegraf.Serializer Config *SerializerConfig log telegraf.Logger @@ -28,7 +27,7 @@ type RunningSerializer struct { SerializationTime selfstat.Stat } -func NewRunningSerializer(serializer serializers.Serializer, config *SerializerConfig) *RunningSerializer { +func NewRunningSerializer(serializer telegraf.Serializer, config *SerializerConfig) *RunningSerializer { tags := map[string]string{"type": config.DataFormat} if config.Alias != "" { tags["alias"] = config.Alias diff --git a/plugins/outputs/amqp/amqp.go b/plugins/outputs/amqp/amqp.go index b41fe32a2..4270027bf 100644 --- a/plugins/outputs/amqp/amqp.go +++ b/plugins/outputs/amqp/amqp.go @@ -17,7 +17,6 @@ import ( "github.com/influxdata/telegraf/plugins/common/proxy" "github.com/influxdata/telegraf/plugins/common/tls" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -67,7 +66,7 @@ type AMQP struct { tls.ClientConfig proxy.TCPProxy - serializer serializers.Serializer + serializer telegraf.Serializer connect func(*ClientConfig) (Client, error) client Client config *ClientConfig @@ -84,7 +83,7 @@ func (*AMQP) SampleConfig() string { return sampleConfig } -func (q *AMQP) SetSerializer(serializer serializers.Serializer) { +func (q *AMQP) SetSerializer(serializer telegraf.Serializer) { q.serializer = serializer } diff --git a/plugins/outputs/azure_data_explorer/azure_data_explorer.go b/plugins/outputs/azure_data_explorer/azure_data_explorer.go index c89e56f9c..1c6cf4f1e 100644 --- a/plugins/outputs/azure_data_explorer/azure_data_explorer.go +++ b/plugins/outputs/azure_data_explorer/azure_data_explorer.go @@ -20,7 +20,6 @@ import ( "github.com/influxdata/telegraf/internal" "github.com/influxdata/telegraf/internal/choice" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" "github.com/influxdata/telegraf/plugins/serializers/json" ) @@ -36,7 +35,7 @@ type AzureDataExplorer struct { TableName string `toml:"table_name"` CreateTables bool `toml:"create_tables"` IngestionType string `toml:"ingestion_type"` - serializer serializers.Serializer + serializer telegraf.Serializer kustoClient *kusto.Client metricIngestors map[string]ingest.Ingestor } diff --git a/plugins/outputs/cloud_pubsub/cloud_pubsub.go b/plugins/outputs/cloud_pubsub/cloud_pubsub.go index 259ff37b6..263a57f98 100644 --- a/plugins/outputs/cloud_pubsub/cloud_pubsub.go +++ b/plugins/outputs/cloud_pubsub/cloud_pubsub.go @@ -18,7 +18,6 @@ import ( "github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/internal" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -45,7 +44,7 @@ type PubSub struct { stubTopic func(id string) topic - serializer serializers.Serializer + serializer telegraf.Serializer publishResults []publishResult encoder internal.ContentEncoder } @@ -54,7 +53,7 @@ func (*PubSub) SampleConfig() string { return sampleConfig } -func (ps *PubSub) SetSerializer(serializer serializers.Serializer) { +func (ps *PubSub) SetSerializer(serializer telegraf.Serializer) { ps.serializer = serializer } diff --git a/plugins/outputs/event_hubs/event_hubs.go b/plugins/outputs/event_hubs/event_hubs.go index f7e0695ef..a5d0b6861 100644 --- a/plugins/outputs/event_hubs/event_hubs.go +++ b/plugins/outputs/event_hubs/event_hubs.go @@ -11,7 +11,6 @@ import ( "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -62,7 +61,7 @@ type EventHubs struct { Hub EventHubInterface batchOptions []eventhub.BatchOption - serializer serializers.Serializer + serializer telegraf.Serializer } const ( @@ -104,7 +103,7 @@ func (e *EventHubs) Close() error { return nil } -func (e *EventHubs) SetSerializer(serializer serializers.Serializer) { +func (e *EventHubs) SetSerializer(serializer telegraf.Serializer) { e.serializer = serializer } diff --git a/plugins/outputs/exec/exec.go b/plugins/outputs/exec/exec.go index 08fed06e8..350c7357c 100644 --- a/plugins/outputs/exec/exec.go +++ b/plugins/outputs/exec/exec.go @@ -16,7 +16,6 @@ import ( "github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/internal" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -33,7 +32,7 @@ type Exec struct { Log telegraf.Logger `toml:"-"` runner Runner - serializer serializers.Serializer + serializer telegraf.Serializer } func (*Exec) SampleConfig() string { @@ -47,7 +46,7 @@ func (e *Exec) Init() error { } // SetSerializer sets the serializer for the output. -func (e *Exec) SetSerializer(serializer serializers.Serializer) { +func (e *Exec) SetSerializer(serializer telegraf.Serializer) { e.serializer = serializer } diff --git a/plugins/outputs/execd/execd.go b/plugins/outputs/execd/execd.go index f764d142e..f76aaee76 100644 --- a/plugins/outputs/execd/execd.go +++ b/plugins/outputs/execd/execd.go @@ -14,7 +14,6 @@ import ( "github.com/influxdata/telegraf/config" "github.com/influxdata/telegraf/internal/process" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -29,14 +28,14 @@ type Execd struct { Log telegraf.Logger process *process.Process - serializer serializers.Serializer + serializer telegraf.Serializer } func (*Execd) SampleConfig() string { return sampleConfig } -func (e *Execd) SetSerializer(s serializers.Serializer) { +func (e *Execd) SetSerializer(s telegraf.Serializer) { e.serializer = s } diff --git a/plugins/outputs/file/file.go b/plugins/outputs/file/file.go index b005026c9..8987a5441 100644 --- a/plugins/outputs/file/file.go +++ b/plugins/outputs/file/file.go @@ -13,7 +13,6 @@ import ( "github.com/influxdata/telegraf/internal" "github.com/influxdata/telegraf/internal/rotate" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -32,14 +31,14 @@ type File struct { encoder internal.ContentEncoder writer io.Writer closers []io.Closer - serializer serializers.Serializer + serializer telegraf.Serializer } func (*File) SampleConfig() string { return sampleConfig } -func (f *File) SetSerializer(serializer serializers.Serializer) { +func (f *File) SetSerializer(serializer telegraf.Serializer) { f.serializer = serializer } diff --git a/plugins/outputs/http/http.go b/plugins/outputs/http/http.go index 306353513..59d6f3d06 100644 --- a/plugins/outputs/http/http.go +++ b/plugins/outputs/http/http.go @@ -25,7 +25,6 @@ import ( common_aws "github.com/influxdata/telegraf/plugins/common/aws" common_http "github.com/influxdata/telegraf/plugins/common/http" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -56,7 +55,7 @@ type HTTP struct { Log telegraf.Logger `toml:"-"` client *http.Client - serializer serializers.Serializer + serializer telegraf.Serializer awsCfg *aws.Config common_aws.CredentialConfig @@ -70,7 +69,7 @@ func (*HTTP) SampleConfig() string { return sampleConfig } -func (h *HTTP) SetSerializer(serializer serializers.Serializer) { +func (h *HTTP) SetSerializer(serializer telegraf.Serializer) { h.serializer = serializer } diff --git a/plugins/outputs/http/http_test.go b/plugins/outputs/http/http_test.go index 52ca1cd29..0bba3b23d 100644 --- a/plugins/outputs/http/http_test.go +++ b/plugins/outputs/http/http_test.go @@ -21,7 +21,6 @@ import ( common_aws "github.com/influxdata/telegraf/plugins/common/aws" common_http "github.com/influxdata/telegraf/plugins/common/http" "github.com/influxdata/telegraf/plugins/common/oauth" - "github.com/influxdata/telegraf/plugins/serializers" "github.com/influxdata/telegraf/plugins/serializers/influx" "github.com/influxdata/telegraf/plugins/serializers/json" "github.com/influxdata/telegraf/testutil" @@ -735,7 +734,7 @@ func TestBatchedUnbatched(t *testing.T) { jsonSerializer := &json.Serializer{} require.NoError(t, jsonSerializer.Init()) - s := map[string]serializers.Serializer{ + s := map[string]telegraf.Serializer{ "influx": influxSerializer, "json": jsonSerializer, } diff --git a/plugins/outputs/kafka/kafka.go b/plugins/outputs/kafka/kafka.go index 13e3de3b8..cec722cd1 100644 --- a/plugins/outputs/kafka/kafka.go +++ b/plugins/outputs/kafka/kafka.go @@ -16,7 +16,6 @@ import ( "github.com/influxdata/telegraf/plugins/common/kafka" "github.com/influxdata/telegraf/plugins/common/proxy" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -56,7 +55,7 @@ type Kafka struct { producerFunc func(addrs []string, config *sarama.Config) (sarama.SyncProducer, error) producer sarama.SyncProducer - serializer serializers.Serializer + serializer telegraf.Serializer } type TopicSuffix struct { @@ -114,7 +113,7 @@ func (k *Kafka) GetTopicName(metric telegraf.Metric) (telegraf.Metric, string) { return metric, topicName } -func (k *Kafka) SetSerializer(serializer serializers.Serializer) { +func (k *Kafka) SetSerializer(serializer telegraf.Serializer) { k.serializer = serializer } diff --git a/plugins/outputs/kinesis/kinesis.go b/plugins/outputs/kinesis/kinesis.go index b8306efea..73c38e8a8 100644 --- a/plugins/outputs/kinesis/kinesis.go +++ b/plugins/outputs/kinesis/kinesis.go @@ -14,7 +14,6 @@ import ( "github.com/influxdata/telegraf" common_aws "github.com/influxdata/telegraf/plugins/common/aws" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -32,7 +31,7 @@ type ( Debug bool `toml:"debug"` Log telegraf.Logger `toml:"-"` - serializer serializers.Serializer + serializer telegraf.Serializer svc kinesisClient common_aws.CredentialConfig @@ -86,7 +85,7 @@ func (k *KinesisOutput) Close() error { return nil } -func (k *KinesisOutput) SetSerializer(serializer serializers.Serializer) { +func (k *KinesisOutput) SetSerializer(serializer telegraf.Serializer) { k.serializer = serializer } diff --git a/plugins/outputs/kinesis/kinesis_test.go b/plugins/outputs/kinesis/kinesis_test.go index 00f7f73c6..acc15d673 100644 --- a/plugins/outputs/kinesis/kinesis_test.go +++ b/plugins/outputs/kinesis/kinesis_test.go @@ -12,7 +12,6 @@ import ( "github.com/stretchr/testify/require" "github.com/influxdata/telegraf" - "github.com/influxdata/telegraf/plugins/serializers" "github.com/influxdata/telegraf/plugins/serializers/influx" "github.com/influxdata/telegraf/testutil" ) @@ -566,11 +565,7 @@ func (m *mockKinesisPutRecords) AssertRequests( } } -func createTestMetric( - t *testing.T, - name string, - serializer serializers.Serializer, -) (telegraf.Metric, []byte) { +func createTestMetric(t *testing.T, name string, serializer telegraf.Serializer) (telegraf.Metric, []byte) { metric := testutil.TestMetric(1, name) data, err := serializer.Serialize(metric) @@ -579,11 +574,7 @@ func createTestMetric( return metric, data } -func createTestMetrics( - t *testing.T, - count uint32, - serializer serializers.Serializer, -) ([]telegraf.Metric, [][]byte) { +func createTestMetrics(t *testing.T, count uint32, serializer telegraf.Serializer) ([]telegraf.Metric, [][]byte) { metrics := make([]telegraf.Metric, 0, count) metricsData := make([][]byte, 0, count) diff --git a/plugins/outputs/mqtt/mqtt.go b/plugins/outputs/mqtt/mqtt.go index df57c4414..9e710c846 100644 --- a/plugins/outputs/mqtt/mqtt.go +++ b/plugins/outputs/mqtt/mqtt.go @@ -14,7 +14,6 @@ import ( "github.com/influxdata/telegraf/internal" "github.com/influxdata/telegraf/plugins/common/mqtt" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -36,7 +35,7 @@ type MQTT struct { mqtt.MqttConfig client mqtt.Client - serializer serializers.Serializer + serializer telegraf.Serializer generator *TopicNameGenerator homieDeviceNameGenerator *HomieGenerator @@ -118,7 +117,7 @@ func (m *MQTT) Connect() error { return err } -func (m *MQTT) SetSerializer(serializer serializers.Serializer) { +func (m *MQTT) SetSerializer(serializer telegraf.Serializer) { m.serializer = serializer } diff --git a/plugins/outputs/nats/nats.go b/plugins/outputs/nats/nats.go index ace7901fd..d00598d75 100644 --- a/plugins/outputs/nats/nats.go +++ b/plugins/outputs/nats/nats.go @@ -17,7 +17,6 @@ import ( "github.com/influxdata/telegraf/internal/choice" "github.com/influxdata/telegraf/plugins/common/tls" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -39,7 +38,7 @@ type NATS struct { conn *nats.Conn jetstreamClient jetstream.JetStream jetstreamStreamConfig *jetstream.StreamConfig - serializer serializers.Serializer + serializer telegraf.Serializer } // StreamConfig is the configuration for creating stream @@ -83,7 +82,7 @@ func (*NATS) SampleConfig() string { return sampleConfig } -func (n *NATS) SetSerializer(serializer serializers.Serializer) { +func (n *NATS) SetSerializer(serializer telegraf.Serializer) { n.serializer = serializer } diff --git a/plugins/outputs/nsq/nsq.go b/plugins/outputs/nsq/nsq.go index 2c771b191..ee66d7f4e 100644 --- a/plugins/outputs/nsq/nsq.go +++ b/plugins/outputs/nsq/nsq.go @@ -9,7 +9,6 @@ import ( "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -21,14 +20,14 @@ type NSQ struct { Log telegraf.Logger `toml:"-"` producer *nsq.Producer - serializer serializers.Serializer + serializer telegraf.Serializer } func (*NSQ) SampleConfig() string { return sampleConfig } -func (n *NSQ) SetSerializer(serializer serializers.Serializer) { +func (n *NSQ) SetSerializer(serializer telegraf.Serializer) { n.serializer = serializer } diff --git a/plugins/outputs/socket_writer/socket_writer.go b/plugins/outputs/socket_writer/socket_writer.go index b2aec04b9..26e7ce60d 100644 --- a/plugins/outputs/socket_writer/socket_writer.go +++ b/plugins/outputs/socket_writer/socket_writer.go @@ -19,7 +19,6 @@ import ( "github.com/influxdata/telegraf/internal" common_tls "github.com/influxdata/telegraf/plugins/common/tls" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -32,7 +31,7 @@ type SocketWriter struct { common_tls.ClientConfig Log telegraf.Logger `toml:"-"` - serializers.Serializer + serializer telegraf.Serializer encoder internal.ContentEncoder @@ -43,8 +42,8 @@ func (*SocketWriter) SampleConfig() string { return sampleConfig } -func (sw *SocketWriter) SetSerializer(s serializers.Serializer) { - sw.Serializer = s +func (sw *SocketWriter) SetSerializer(s telegraf.Serializer) { + sw.serializer = s } func (sw *SocketWriter) Connect() error { @@ -141,7 +140,7 @@ func (sw *SocketWriter) Write(metrics []telegraf.Metric) error { } for _, m := range metrics { - bs, err := sw.Serialize(m) + bs, err := sw.serializer.Serialize(m) if err != nil { sw.Log.Debugf("Could not serialize metric: %v", err) continue diff --git a/plugins/outputs/socket_writer/socket_writer_test.go b/plugins/outputs/socket_writer/socket_writer_test.go index 478d05a31..c2de7a62f 100644 --- a/plugins/outputs/socket_writer/socket_writer_test.go +++ b/plugins/outputs/socket_writer/socket_writer_test.go @@ -19,7 +19,7 @@ func newSocketWriter(t *testing.T, addr string) *SocketWriter { require.NoError(t, serializer.Init()) return &SocketWriter{ Address: addr, - Serializer: serializer, + serializer: serializer, } } @@ -79,12 +79,12 @@ func TestSocketWriter_unixgram(t *testing.T) { func testSocketWriterStream(t *testing.T, sw *SocketWriter, lconn net.Conn) { metrics := []telegraf.Metric{testutil.TestMetric(1, "test")} - mbs1out, err := sw.Serialize(metrics[0]) + mbs1out, err := sw.serializer.Serialize(metrics[0]) require.NoError(t, err) mbs1out, err = sw.encoder.Encode(mbs1out) require.NoError(t, err) metrics = append(metrics, testutil.TestMetric(2, "test")) - mbs2out, err := sw.Serialize(metrics[1]) + mbs2out, err := sw.serializer.Serialize(metrics[1]) require.NoError(t, err) mbs2out, err = sw.encoder.Encode(mbs2out) require.NoError(t, err) @@ -104,13 +104,13 @@ func testSocketWriterStream(t *testing.T, sw *SocketWriter, lconn net.Conn) { func testSocketWriterPacket(t *testing.T, sw *SocketWriter, lconn net.PacketConn) { metrics := []telegraf.Metric{testutil.TestMetric(1, "test")} - mbs1out, err := sw.Serialize(metrics[0]) + mbs1out, err := sw.serializer.Serialize(metrics[0]) require.NoError(t, err) mbs1out, err = sw.encoder.Encode(mbs1out) require.NoError(t, err) mbs1str := string(mbs1out) metrics = append(metrics, testutil.TestMetric(2, "test")) - mbs2out, err := sw.Serialize(metrics[1]) + mbs2out, err := sw.serializer.Serialize(metrics[1]) require.NoError(t, err) mbs2out, err = sw.encoder.Encode(mbs2out) require.NoError(t, err) @@ -191,7 +191,7 @@ func TestSocketWriter_Write_reconnect(t *testing.T) { wg.Wait() require.NoError(t, lerr) - mbsout, err := sw.Serialize(metrics[0]) + mbsout, err := sw.serializer.Serialize(metrics[0]) require.NoError(t, err) buf := make([]byte, 256) n, err := lconn.Read(buf) diff --git a/plugins/outputs/stomp/stomp.go b/plugins/outputs/stomp/stomp.go index 7e12762d0..4433abee8 100644 --- a/plugins/outputs/stomp/stomp.go +++ b/plugins/outputs/stomp/stomp.go @@ -14,7 +14,6 @@ import ( "github.com/influxdata/telegraf/config" common_tls "github.com/influxdata/telegraf/plugins/common/tls" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -35,7 +34,7 @@ type STOMP struct { conn net.Conn stomp *stomp.Conn - serialize serializers.Serializer + serialize telegraf.Serializer } func (q *STOMP) Connect() error { @@ -71,7 +70,7 @@ func (q *STOMP) Connect() error { return nil } -func (q *STOMP) SetSerializer(serializer serializers.Serializer) { +func (q *STOMP) SetSerializer(serializer telegraf.Serializer) { q.serialize = serializer } diff --git a/plugins/outputs/sumologic/sumologic.go b/plugins/outputs/sumologic/sumologic.go index 37e4798da..a01033fb3 100644 --- a/plugins/outputs/sumologic/sumologic.go +++ b/plugins/outputs/sumologic/sumologic.go @@ -15,7 +15,6 @@ import ( "github.com/influxdata/telegraf/internal" "github.com/influxdata/telegraf/models" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" "github.com/influxdata/telegraf/plugins/serializers/carbon2" "github.com/influxdata/telegraf/plugins/serializers/graphite" "github.com/influxdata/telegraf/plugins/serializers/prometheus" @@ -57,7 +56,7 @@ type SumoLogic struct { Log telegraf.Logger `toml:"-"` client *http.Client - serializer serializers.Serializer + serializer telegraf.Serializer headers map[string]string } @@ -66,7 +65,7 @@ func (*SumoLogic) SampleConfig() string { return sampleConfig } -func (s *SumoLogic) SetSerializer(serializer serializers.Serializer) { +func (s *SumoLogic) SetSerializer(serializer telegraf.Serializer) { s.serializer = serializer } @@ -82,7 +81,7 @@ func (s *SumoLogic) createClient() *http.Client { func (s *SumoLogic) Connect() error { s.headers = make(map[string]string) - var serializer serializers.Serializer + var serializer telegraf.Serializer if unwrapped, ok := s.serializer.(*models.RunningSerializer); ok { serializer = unwrapped.Serializer } else { diff --git a/plugins/outputs/websocket/websocket.go b/plugins/outputs/websocket/websocket.go index f772c159c..c8767c592 100644 --- a/plugins/outputs/websocket/websocket.go +++ b/plugins/outputs/websocket/websocket.go @@ -16,7 +16,6 @@ import ( "github.com/influxdata/telegraf/plugins/common/proxy" "github.com/influxdata/telegraf/plugins/common/tls" "github.com/influxdata/telegraf/plugins/outputs" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -42,7 +41,7 @@ type WebSocket struct { tls.ClientConfig conn *ws.Conn - serializer serializers.Serializer + serializer telegraf.Serializer } func (*WebSocket) SampleConfig() string { @@ -50,7 +49,7 @@ func (*WebSocket) SampleConfig() string { } // SetSerializer implements serializers.SerializerOutput. -func (w *WebSocket) SetSerializer(serializer serializers.Serializer) { +func (w *WebSocket) SetSerializer(serializer telegraf.Serializer) { w.serializer = serializer } diff --git a/plugins/processors/execd/execd.go b/plugins/processors/execd/execd.go index 0407226f9..481ffd35f 100644 --- a/plugins/processors/execd/execd.go +++ b/plugins/processors/execd/execd.go @@ -15,7 +15,6 @@ import ( "github.com/influxdata/telegraf/internal/process" "github.com/influxdata/telegraf/plugins/parsers/influx" "github.com/influxdata/telegraf/plugins/processors" - "github.com/influxdata/telegraf/plugins/serializers" ) //go:embed sample.conf @@ -28,7 +27,7 @@ type Execd struct { Log telegraf.Logger parser telegraf.Parser - serializer serializers.Serializer + serializer telegraf.Serializer acc telegraf.Accumulator process *process.Process } diff --git a/plugins/serializers/binary/binary.go b/plugins/serializers/binary/binary.go index 754a1b171..ce4148813 100644 --- a/plugins/serializers/binary/binary.go +++ b/plugins/serializers/binary/binary.go @@ -101,7 +101,7 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) { func init() { serializers.Add("binary", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) diff --git a/plugins/serializers/carbon2/carbon2.go b/plugins/serializers/carbon2/carbon2.go index 5bd3c2503..827301fa7 100644 --- a/plugins/serializers/carbon2/carbon2.go +++ b/plugins/serializers/carbon2/carbon2.go @@ -112,16 +112,8 @@ func (s *Serializer) createObject(metric telegraf.Metric) []byte { func init() { serializers.Add("carbon2", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(cfg *serializers.Config) error { - s.Format = cfg.Carbon2Format - s.SanitizeReplaceChar = cfg.Carbon2SanitizeReplaceChar - - return nil -} diff --git a/plugins/serializers/cloudevents/cloudevents.go b/plugins/serializers/cloudevents/cloudevents.go index 0112d9fe4..a5dc2dcc5 100644 --- a/plugins/serializers/cloudevents/cloudevents.go +++ b/plugins/serializers/cloudevents/cloudevents.go @@ -192,7 +192,7 @@ func (s *Serializer) createEvent(m telegraf.Metric) (*cloudevents.Event, error) func init() { serializers.Add("cloudevents", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) diff --git a/plugins/serializers/csv/csv.go b/plugins/serializers/csv/csv.go index d9ba94f74..7931270f4 100644 --- a/plugins/serializers/csv/csv.go +++ b/plugins/serializers/csv/csv.go @@ -238,18 +238,8 @@ func (s *Serializer) writeDataOrdered(metric telegraf.Metric) error { func init() { serializers.Add("csv", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(cfg *serializers.Config) error { - s.TimestampFormat = cfg.TimestampFormat - s.Separator = cfg.CSVSeparator - s.Header = cfg.CSVHeader - s.Prefix = cfg.CSVPrefix - - return nil -} diff --git a/plugins/serializers/graphite/graphite.go b/plugins/serializers/graphite/graphite.go index cb84ae47f..60dc31827 100644 --- a/plugins/serializers/graphite/graphite.go +++ b/plugins/serializers/graphite/graphite.go @@ -355,20 +355,8 @@ func compatibleSanitize(name, value string) string { func init() { serializers.Add("graphite", - func() serializers.Serializer { + func() telegraf.Serializer { return &GraphiteSerializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *GraphiteSerializer) InitFromConfig(cfg *serializers.Config) error { - s.Prefix = cfg.Prefix - s.Templates = cfg.Templates - s.StrictRegex = cfg.GraphiteStrictRegex - s.TagSupport = cfg.GraphiteTagSupport - s.TagSanitizeMode = cfg.GraphiteTagSanitizeMode - s.Separator = cfg.GraphiteSeparator - - return nil -} diff --git a/plugins/serializers/influx/influx.go b/plugins/serializers/influx/influx.go index 191fa7e51..cfe7631a2 100644 --- a/plugins/serializers/influx/influx.go +++ b/plugins/serializers/influx/influx.go @@ -328,17 +328,8 @@ func appendStringField(buf []byte, value string) []byte { func init() { serializers.Add("influx", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(cfg *serializers.Config) error { - s.MaxLineBytes = cfg.InfluxMaxLineBytes - s.SortFields = cfg.InfluxSortFields - s.UintSupport = cfg.InfluxUintSupport - - return nil -} diff --git a/plugins/serializers/json/json.go b/plugins/serializers/json/json.go index e29308988..c91281868 100644 --- a/plugins/serializers/json/json.go +++ b/plugins/serializers/json/json.go @@ -162,19 +162,8 @@ func (s *Serializer) transform(obj interface{}) (interface{}, error) { func init() { serializers.Add("json", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(cfg *serializers.Config) error { - s.TimestampUnits = config.Duration(cfg.TimestampUnits) - s.TimestampFormat = cfg.TimestampFormat - s.Transformation = cfg.Transformation - s.NestedFieldsInclude = cfg.JSONNestedFieldInclude - s.NestedFieldsExclude = cfg.JSONNestedFieldExclude - - return nil -} diff --git a/plugins/serializers/msgpack/msgpack.go b/plugins/serializers/msgpack/msgpack.go index fef37e7c0..a1bb7346f 100644 --- a/plugins/serializers/msgpack/msgpack.go +++ b/plugins/serializers/msgpack/msgpack.go @@ -40,13 +40,8 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) { func init() { serializers.Add("msgpack", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(_ *serializers.Config) error { - return nil -} diff --git a/plugins/serializers/nowmetric/nowmetric.go b/plugins/serializers/nowmetric/nowmetric.go index fd2782959..d25e90276 100644 --- a/plugins/serializers/nowmetric/nowmetric.go +++ b/plugins/serializers/nowmetric/nowmetric.go @@ -130,13 +130,8 @@ func verifyValue(v interface{}) bool { func init() { serializers.Add("nowmetric", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(_ *serializers.Config) error { - return nil -} diff --git a/plugins/serializers/prometheus/prometheus.go b/plugins/serializers/prometheus/prometheus.go index e2a7b34e8..21dc136c7 100644 --- a/plugins/serializers/prometheus/prometheus.go +++ b/plugins/serializers/prometheus/prometheus.go @@ -88,18 +88,8 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) { func init() { serializers.Add("prometheus", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(cfg *serializers.Config) error { - s.FormatConfig.CompactEncoding = cfg.PrometheusCompactEncoding - s.FormatConfig.SortMetrics = cfg.PrometheusSortMetrics - s.FormatConfig.StringAsLabel = cfg.PrometheusStringAsLabel - s.FormatConfig.ExportTimestamp = cfg.PrometheusExportTimestamp - - return nil -} diff --git a/plugins/serializers/prometheusremotewrite/prometheusremotewrite.go b/plugins/serializers/prometheusremotewrite/prometheusremotewrite.go index 3f281eaed..413f876cc 100644 --- a/plugins/serializers/prometheusremotewrite/prometheusremotewrite.go +++ b/plugins/serializers/prometheusremotewrite/prometheusremotewrite.go @@ -350,16 +350,8 @@ func (sl sortableLabels) Swap(i, j int) { func init() { serializers.Add("prometheusremotewrite", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(cfg *serializers.Config) error { - s.SortMetrics = cfg.PrometheusSortMetrics - s.StringAsLabel = cfg.PrometheusStringAsLabel - - return nil -} diff --git a/plugins/serializers/registry.go b/plugins/serializers/registry.go index 03b9e9d06..27881d04e 100644 --- a/plugins/serializers/registry.go +++ b/plugins/serializers/registry.go @@ -1,14 +1,9 @@ package serializers -import ( - "fmt" - "time" - - "github.com/influxdata/telegraf" -) +import "github.com/influxdata/telegraf" // Creator is the function to create a new serializer -type Creator func() Serializer +type Creator func() telegraf.Serializer // Serializers contains the registry of all known serializers (following the new style) var Serializers = make(map[string]Creator) @@ -17,157 +12,3 @@ var Serializers = make(map[string]Creator) func Add(name string, creator Creator) { Serializers[name] = creator } - -// SerializerOutput is an interface for output plugins that are able to -// serialize telegraf metrics into arbitrary data formats. -type SerializerOutput interface { - // SetSerializer sets the serializer function for the interface. - SetSerializer(serializer Serializer) -} - -// Serializer is an interface defining functions that a serializer plugin must -// satisfy. -// -// Implementations of this interface should be reentrant but are not required -// to be thread-safe. -type Serializer interface { - // Serialize takes a single telegraf metric and turns it into a byte buffer. - // separate metrics should be separated by a newline, and there should be - // a newline at the end of the buffer. - // - // New plugins should use SerializeBatch instead to allow for non-line - // delimited metrics. - Serialize(metric telegraf.Metric) ([]byte, error) - - // SerializeBatch takes an array of telegraf metric and serializes it into - // a byte buffer. This method is not required to be suitable for use with - // line oriented framing. - SerializeBatch(metrics []telegraf.Metric) ([]byte, error) -} - -// SerializerCompatibility is an interface for backward-compatible initialization of serializers -type SerializerCompatibility interface { - // InitFromConfig sets the serializers internal variables from the old-style config - InitFromConfig(config *Config) error -} - -// Config is a struct that covers the data types needed for all serializer types, -// and can be used to instantiate _any_ of the serializers. -type Config struct { - // DataFormat can be one of the serializer types listed in NewSerializer. - DataFormat string `toml:"data_format"` - - // Carbon2 metric format. - Carbon2Format string `toml:"carbon2_format"` - - // Character used for metric name sanitization in Carbon2. - Carbon2SanitizeReplaceChar string `toml:"carbon2_sanitize_replace_char"` - - // Separator for CSV - CSVSeparator string `toml:"csv_separator"` - - // Output a CSV header for naming the columns - CSVHeader bool `toml:"csv_header"` - - // Prefix the tag and field columns for CSV format - CSVPrefix bool `toml:"csv_column_prefix"` - - // Support tags in graphite protocol - GraphiteTagSupport bool `toml:"graphite_tag_support"` - - // Support tags which follow the spec - GraphiteTagSanitizeMode string `toml:"graphite_tag_sanitize_mode"` - - // Character for separating metric name and field for Graphite tags - GraphiteSeparator string `toml:"graphite_separator"` - - // Regex string - GraphiteStrictRegex string `toml:"graphite_strict_sanitize_regex"` - - // Maximum line length in bytes; influx format only - InfluxMaxLineBytes int `toml:"influx_max_line_bytes"` - - // Sort field keys, set to true only when debugging as it less performant - // than unsorted fields; influx format only - InfluxSortFields bool `toml:"influx_sort_fields"` - - // Support unsigned integer output; influx format only - InfluxUintSupport bool `toml:"influx_uint_support"` - - // Omit timestamp from output; influx format only - InfluxOmitTimestamp bool `toml:"influx_omit_timestamp"` - - // Prefix to add to all measurements, only supports Graphite - Prefix string `toml:"prefix"` - - // Template for converting telegraf metrics into Graphite - // only supports Graphite - Template string `toml:"template"` - - // Templates same Template, but multiple - Templates []string `toml:"templates"` - - // Timestamp units to use for JSON formatted output - TimestampUnits time.Duration `toml:"timestamp_units"` - - // Timestamp format to use for JSON and CSV formatted output - TimestampFormat string `toml:"timestamp_format"` - - // Transformation as JSONata expression to use for JSON formatted output - Transformation string `toml:"transformation"` - - // Field filter for interpreting data as nested JSON for JSON serializer - JSONNestedFieldInclude []string `toml:"json_nested_fields_include"` - JSONNestedFieldExclude []string `toml:"json_nested_fields_exclude"` - - // Include HEC routing fields for splunkmetric output - HecRouting bool `toml:"hec_routing"` - - // Enable Splunk MultiMetric output (Splunk 8.0+) - SplunkmetricMultiMetric bool `toml:"splunkmetric_multi_metric"` - - // Omit the Splunk Event "metric" tag - SplunkmetricOmitEventTag bool `toml:"splunkmetric_omit_event_tag"` - - // Point tags to use as the source name for Wavefront (if none found, host will be used). - WavefrontSourceOverride []string `toml:"wavefront_source_override"` - - // Use Strict rules to sanitize metric and tag names from invalid characters for Wavefront - // When enabled forward slash (/) and comma (,) will be accepted - WavefrontUseStrict bool `toml:"wavefront_use_strict"` - - // Convert "_" in prefixes to "." for Wavefront - WavefrontDisablePrefixConversion bool `toml:"wavefront_disable_prefix_conversion"` - - // Include the metric timestamp on each sample. - PrometheusExportTimestamp bool `toml:"prometheus_export_timestamp"` - - // Sort prometheus metric families and metric samples. Useful for - // debugging. - PrometheusSortMetrics bool `toml:"prometheus_sort_metrics"` - - // Output string fields as metric labels; when false string fields are - // discarded. - PrometheusStringAsLabel bool `toml:"prometheus_string_as_label"` - - // Encode metrics without HELP metadata. This helps reduce the payload size. - PrometheusCompactEncoding bool `toml:"prometheus_compact_encoding"` -} - -// NewSerializer a Serializer interface based on the given config. -func NewSerializer(config *Config) (Serializer, error) { - creator, found := Serializers[config.DataFormat] - if !found { - return nil, fmt.Errorf("invalid data format: %s", config.DataFormat) - } - - // Try to create new-style serializers the old way... - serializer := creator() - p, ok := serializer.(SerializerCompatibility) - if !ok { - return nil, fmt.Errorf("serializer for %q cannot be created the old way", config.DataFormat) - } - err := p.InitFromConfig(config) - - return serializer, err -} diff --git a/plugins/serializers/splunkmetric/splunkmetric.go b/plugins/serializers/splunkmetric/splunkmetric.go index 4e34ba573..4eb8b982a 100644 --- a/plugins/serializers/splunkmetric/splunkmetric.go +++ b/plugins/serializers/splunkmetric/splunkmetric.go @@ -210,17 +210,8 @@ func verifyValue(v interface{}) (value interface{}, valid bool) { func init() { serializers.Add("splunkmetric", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(cfg *serializers.Config) error { - s.HecRouting = cfg.HecRouting - s.MultiMetric = cfg.SplunkmetricMultiMetric - s.OmitEventTag = cfg.SplunkmetricOmitEventTag - - return nil -} diff --git a/plugins/serializers/template/template.go b/plugins/serializers/template/template.go index 0527fd4a9..39ea176e8 100644 --- a/plugins/serializers/template/template.go +++ b/plugins/serializers/template/template.go @@ -95,7 +95,7 @@ func (s *Serializer) SerializeBatch(metrics []telegraf.Metric) ([]byte, error) { func init() { serializers.Add("template", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) diff --git a/plugins/serializers/wavefront/wavefront.go b/plugins/serializers/wavefront/wavefront.go index f38c97589..e326a85d0 100644 --- a/plugins/serializers/wavefront/wavefront.go +++ b/plugins/serializers/wavefront/wavefront.go @@ -189,18 +189,8 @@ func (b *buffer) WriteFloat64(val float64) { func init() { serializers.Add("wavefront", - func() serializers.Serializer { + func() telegraf.Serializer { return &Serializer{} }, ) } - -// InitFromConfig is a compatibility function to construct the parser the old way -func (s *Serializer) InitFromConfig(cfg *serializers.Config) error { - s.Prefix = cfg.Prefix - s.UseStrict = cfg.WavefrontUseStrict - s.SourceOverride = cfg.WavefrontSourceOverride - s.DisablePrefixConversions = cfg.WavefrontDisablePrefixConversion - - return nil -}