diff --git a/plugins/outputs/sumologic/sumologic.go b/plugins/outputs/sumologic/sumologic.go index b501b06036cc8..a7f1f64662f15 100644 --- a/plugins/outputs/sumologic/sumologic.go +++ b/plugins/outputs/sumologic/sumologic.go @@ -13,6 +13,7 @@ import ( "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/config" "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" @@ -58,7 +59,6 @@ type SumoLogic struct { client *http.Client serializer serializers.Serializer - err error headers map[string]string } @@ -67,21 +67,6 @@ func (*SumoLogic) SampleConfig() string { } func (s *SumoLogic) SetSerializer(serializer serializers.Serializer) { - if s.headers == nil { - s.headers = make(map[string]string) - } - - switch serializer.(type) { - case *carbon2.Serializer: - s.headers[contentTypeHeader] = carbon2ContentType - case *graphite.GraphiteSerializer: - s.headers[contentTypeHeader] = graphiteContentType - case *prometheus.Serializer: - s.headers[contentTypeHeader] = prometheusContentType - default: - s.err = fmt.Errorf("unsupported serializer %T", serializer) - } - s.serializer = serializer } @@ -95,8 +80,24 @@ func (s *SumoLogic) createClient() *http.Client { } func (s *SumoLogic) Connect() error { - if s.err != nil { - return fmt.Errorf("sumologic: incorrect configuration: %w", s.err) + s.headers = make(map[string]string) + + var serializer serializers.Serializer + if unwrapped, ok := s.serializer.(*models.RunningSerializer); ok { + serializer = unwrapped.Serializer + } else { + serializer = s.serializer + } + + switch serializer.(type) { + case *carbon2.Serializer: + s.headers[contentTypeHeader] = carbon2ContentType + case *graphite.GraphiteSerializer: + s.headers[contentTypeHeader] = graphiteContentType + case *prometheus.Serializer: + s.headers[contentTypeHeader] = prometheusContentType + default: + return fmt.Errorf("unsupported serializer %T", serializer) } if s.Timeout == 0 { @@ -109,13 +110,10 @@ func (s *SumoLogic) Connect() error { } func (s *SumoLogic) Close() error { - return s.err + return nil } func (s *SumoLogic) Write(metrics []telegraf.Metric) error { - if s.err != nil { - return fmt.Errorf("sumologic: incorrect configuration: %w", s.err) - } if s.serializer == nil { return errors.New("sumologic: serializer unset") }