@@ -26,142 +26,126 @@ import (
26
26
"go.opentelemetry.io/collector/pdata/plog"
27
27
"go.opentelemetry.io/collector/pdata/pmetric"
28
28
"go.opentelemetry.io/collector/pdata/ptrace"
29
+ "go.uber.org/multierr"
29
30
)
30
31
31
32
type tracesExporter struct {
32
33
logger common.Logger
33
- cfg * Config
34
34
writer * influxHTTPWriter
35
35
converter * otel2influx.OtelTracesToLineProtocol
36
- settings component.TelemetrySettings
37
36
}
38
37
39
- func newTracesExporter (config * Config , params exporter.CreateSettings ) * tracesExporter {
40
- logger := newZapInfluxLogger (params .Logger )
41
- converter := otel2influx .NewOtelTracesToLineProtocol (logger )
38
+ func newTracesExporter (config * Config , settings exporter.CreateSettings ) (* tracesExporter , error ) {
39
+ logger := newZapInfluxLogger (settings .Logger )
40
+
41
+ writer , err := newInfluxHTTPWriter (logger , config , settings .TelemetrySettings )
42
+ if err != nil {
43
+ return nil , err
44
+ }
45
+
46
+ converter , err := otel2influx .NewOtelTracesToLineProtocol (logger , writer )
47
+ if err != nil {
48
+ return nil , err
49
+ }
42
50
43
51
return & tracesExporter {
44
52
logger : logger ,
45
- cfg : config ,
53
+ writer : writer ,
46
54
converter : converter ,
47
- settings : params .TelemetrySettings ,
48
- }
55
+ }, nil
49
56
}
50
57
51
58
func (e * tracesExporter ) pushTraces (ctx context.Context , td ptrace.Traces ) error {
52
- batch := e .writer .newBatch ()
53
-
54
- err := e .converter .WriteTraces (ctx , td , batch )
59
+ err := e .converter .WriteTraces (ctx , td )
55
60
if err != nil {
56
61
return consumererror .NewPermanent (err )
57
62
}
58
- return batch . flushAndClose ( ctx )
63
+ return nil
59
64
}
60
65
61
- // start starts the traces exporter
62
- func (e * tracesExporter ) start (_ context.Context , host component.Host ) (err error ) {
63
-
64
- writer , err := newInfluxHTTPWriter (e .logger , e .cfg , host , e .settings )
65
- if err != nil {
66
- return err
67
- }
68
- e .writer = writer
66
+ func (e * tracesExporter ) Start (ctx context.Context , host component.Host ) error {
67
+ e .logger .Debug ("starting traces exporter" )
68
+ return multierr .Combine (
69
+ e .writer .Start (ctx , host ),
70
+ e .converter .Start (ctx , host ))
71
+ }
69
72
70
- return nil
73
+ func (e * tracesExporter ) Shutdown (ctx context.Context ) error {
74
+ return e .converter .Shutdown (ctx )
71
75
}
72
76
73
77
type metricsExporter struct {
74
78
logger common.Logger
75
- cfg * Config
76
79
writer * influxHTTPWriter
77
80
converter * otel2influx.OtelMetricsToLineProtocol
78
- settings component.TelemetrySettings
79
- }
80
-
81
- var metricsSchemata = map [string ]common.MetricsSchema {
82
- "telegraf-prometheus-v1" : common .MetricsSchemaTelegrafPrometheusV1 ,
83
- "telegraf-prometheus-v2" : common .MetricsSchemaTelegrafPrometheusV2 ,
84
81
}
85
82
86
83
func newMetricsExporter (config * Config , params exporter.CreateSettings ) (* metricsExporter , error ) {
87
84
logger := newZapInfluxLogger (params .Logger )
88
- schema , found := metricsSchemata [config .MetricsSchema ]
85
+ schema , found := common . MetricsSchemata [config .MetricsSchema ]
89
86
if ! found {
90
87
return nil , fmt .Errorf ("schema '%s' not recognized" , config .MetricsSchema )
91
88
}
92
89
93
- converter , err := otel2influx .NewOtelMetricsToLineProtocol (logger , schema )
90
+ writer , err := newInfluxHTTPWriter (logger , config , params .TelemetrySettings )
91
+ if err != nil {
92
+ return nil , err
93
+ }
94
+
95
+ converter , err := otel2influx .NewOtelMetricsToLineProtocol (logger , writer , schema )
94
96
if err != nil {
95
97
return nil , err
96
98
}
97
99
98
100
return & metricsExporter {
99
101
logger : logger ,
100
- cfg : config ,
102
+ writer : writer ,
101
103
converter : converter ,
102
- settings : params .TelemetrySettings ,
103
104
}, nil
104
105
}
105
106
106
107
func (e * metricsExporter ) pushMetrics (ctx context.Context , md pmetric.Metrics ) error {
107
- batch := e .writer .newBatch ()
108
-
109
- err := e .converter .WriteMetrics (ctx , md , batch )
108
+ err := e .converter .WriteMetrics (ctx , md )
110
109
if err != nil {
111
110
return consumererror .NewPermanent (err )
112
111
}
113
- return batch . flushAndClose ( ctx )
112
+ return nil
114
113
}
115
114
116
- // start starts the metrics exporter
117
- func (e * metricsExporter ) start (_ context.Context , host component.Host ) (err error ) {
118
-
119
- writer , err := newInfluxHTTPWriter (e .logger , e .cfg , host , e .settings )
120
- if err != nil {
121
- return err
122
- }
123
- e .writer = writer
124
-
125
- return nil
115
+ func (e * metricsExporter ) Start (ctx context.Context , host component.Host ) error {
116
+ return e .writer .Start (ctx , host )
126
117
}
127
118
128
119
type logsExporter struct {
129
120
logger common.Logger
130
- cfg * Config
131
121
writer * influxHTTPWriter
132
122
converter * otel2influx.OtelLogsToLineProtocol
133
- settings component.TelemetrySettings
134
123
}
135
124
136
- func newLogsExporter (config * Config , params exporter.CreateSettings ) * logsExporter {
125
+ func newLogsExporter (config * Config , params exporter.CreateSettings ) ( * logsExporter , error ) {
137
126
logger := newZapInfluxLogger (params .Logger )
138
- converter := otel2influx .NewOtelLogsToLineProtocol (logger )
127
+
128
+ writer , err := newInfluxHTTPWriter (logger , config , params .TelemetrySettings )
129
+ if err != nil {
130
+ return nil , err
131
+ }
132
+ converter := otel2influx .NewOtelLogsToLineProtocol (logger , writer )
139
133
140
134
return & logsExporter {
141
135
logger : logger ,
136
+ writer : writer ,
142
137
converter : converter ,
143
- cfg : config ,
144
- settings : params .TelemetrySettings ,
145
- }
138
+ }, nil
146
139
}
147
140
148
141
func (e * logsExporter ) pushLogs (ctx context.Context , ld plog.Logs ) error {
149
- batch := e .writer .newBatch ()
150
-
151
- err := e .converter .WriteLogs (ctx , ld , batch )
142
+ err := e .converter .WriteLogs (ctx , ld )
152
143
if err != nil {
153
144
return consumererror .NewPermanent (err )
154
145
}
155
- return batch . flushAndClose ( ctx )
146
+ return nil
156
147
}
157
148
158
- // start starts the logs exporter
159
- func (e * logsExporter ) start (_ context.Context , host component.Host ) (err error ) {
160
- writer , err := newInfluxHTTPWriter (e .logger , e .cfg , host , e .settings )
161
- if err != nil {
162
- return err
163
- }
164
- e .writer = writer
165
-
166
- return nil
149
+ func (e * logsExporter ) Start (ctx context.Context , host component.Host ) error {
150
+ return e .writer .Start (ctx , host )
167
151
}
0 commit comments