@@ -73,12 +73,13 @@ type OTLPConfig struct {
73
73
OtlpProtocol string `help:"OpenTelemetry receiver protocol for all types." env:"OTEL_EXPORTER_OTLP_PROTOCOL"`
74
74
OtlpTracesProtocol string `help:"OpenTelemetry receiver protocol for traces." env:"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL"`
75
75
OtlpMetricsProtocol string `help:"OpenTelemetry receiver protocol for metrics." env:"OTEL_EXPORTER_OTLP_METRICS_PROTOCOL"`
76
- OtlpCompression string `help:"Enable compression for OTLP exporters. Accept: none, gzip" env:"OTEL_EXPORTER_OTLP_COMPRESSION" default:"gzip"`
77
- OtlpTraceCompression string `help:"Enable compression for OTLP traces exporter. Accept: none, gzip" env:"OTEL_EXPORTER_OTLP_TRACES_COMPRESSION"`
78
- OtlpMetricsCompression string `help:"Enable compression for OTLP metrics exporter. Accept: none, gzip." env:"OTEL_EXPORTER_OTLP_METRICS_COMPRESSION"`
76
+ OtlpCompression string `help:"Enable compression for OTLP exporters. Accept: none, gzip" enum:"none,gzip" env:"OTEL_EXPORTER_OTLP_COMPRESSION" default:"gzip"`
77
+ OtlpTraceCompression string `help:"Enable compression for OTLP traces exporter. Accept: none, gzip" enum:"none,gzip" env:"OTEL_EXPORTER_OTLP_TRACES_COMPRESSION" default:"gzip "`
78
+ OtlpMetricsCompression string `help:"Enable compression for OTLP metrics exporter. Accept: none, gzip" enum:"none,gzip" env:"OTEL_EXPORTER_OTLP_METRICS_COMPRESSION" default:"gzip "`
79
79
80
- MetricsExporter string `help:"Metrics export type. Accept: none, otlp, prometheus." env:"OTEL_METRICS_EXPORTER" default:"none"`
81
- PrometheusPort * uint `help:"Prometheus port for the Prometheus HTTP server. Use /metrics endpoint of the connector server if empty" env:"OTEL_EXPORTER_PROMETHEUS_PORT"`
80
+ MetricsExporter string `help:"Metrics export type. Accept: none, otlp, prometheus" enum:"none,otlp,prometheus" env:"OTEL_METRICS_EXPORTER" default:"none"`
81
+ PrometheusPort * uint `help:"Prometheus port for the Prometheus HTTP server. Use /metrics endpoint of the connector server if empty" env:"OTEL_EXPORTER_PROMETHEUS_PORT"`
82
+ DisableGoMetrics * bool `help:"Disable internal Go and process metrics"`
82
83
}
83
84
84
85
// TelemetryState contains OpenTelemetry exporters and basic connector metrics
@@ -120,10 +121,7 @@ func SetupOTelExporters(ctx context.Context, config *OTLPConfig, serviceVersion,
120
121
metricsEndpoint := utils .GetDefault (config .OtlpMetricsEndpoint , config .OtlpEndpoint )
121
122
122
123
// Set up resource.
123
- res , err := newResource (config .ServiceName , serviceVersion )
124
- if err != nil {
125
- return nil , err
126
- }
124
+ res := newResource (logger , config .ServiceName , serviceVersion )
127
125
128
126
var traceProvider * trace.TracerProvider
129
127
if tracesEndpoint != "" {
@@ -181,7 +179,7 @@ func SetupOTelExporters(ctx context.Context, config *OTLPConfig, serviceVersion,
181
179
trace .WithBatcher (traceExporter , trace .WithBatchTimeout (5 * time .Second )),
182
180
)
183
181
} else {
184
- traceProvider = trace .NewTracerProvider ()
182
+ traceProvider = trace .NewTracerProvider (trace . WithResource ( res ) )
185
183
}
186
184
otel .SetTracerProvider (traceProvider )
187
185
@@ -193,9 +191,11 @@ func SetupOTelExporters(ctx context.Context, config *OTLPConfig, serviceVersion,
193
191
194
192
metricOptions := []metric.Option {metric .WithResource (res )}
195
193
196
- // disable default process and go collector metrics
197
- prometheus .Unregister (collectors .NewProcessCollector (collectors.ProcessCollectorOpts {}))
198
- prometheus .Unregister (collectors .NewGoCollector ())
194
+ if config .DisableGoMetrics != nil && ! * config .DisableGoMetrics {
195
+ // disable default process and go collector metrics
196
+ prometheus .Unregister (collectors .NewProcessCollector (collectors.ProcessCollectorOpts {}))
197
+ prometheus .Unregister (collectors .NewGoCollector ())
198
+ }
199
199
200
200
switch metricsExporterType {
201
201
case otelMetricsExporterPrometheus :
@@ -270,20 +270,25 @@ func SetupOTelExporters(ctx context.Context, config *OTLPConfig, serviceVersion,
270
270
}
271
271
272
272
state := & TelemetryState {
273
- Tracer : & Tracer {traceProvider .Tracer (config .ServiceName )},
274
- Meter : meterProvider .Meter (config .ServiceName ),
273
+ Tracer : & Tracer {traceProvider .Tracer (config .ServiceName , traceapi . WithSchemaURL ( semconv . SchemaURL ) )},
274
+ Meter : meterProvider .Meter (config .ServiceName , metricapi . WithSchemaURL ( semconv . SchemaURL ) ),
275
275
Shutdown : shutdownFunc ,
276
276
}
277
277
278
278
return state , err
279
279
}
280
280
281
- func newResource (serviceName , serviceVersion string ) (* resource.Resource , error ) {
282
- return resource .Merge (resource .Default (),
283
- resource .NewWithAttributes (semconv .SchemaURL ,
284
- semconv .ServiceName (serviceName ),
285
- semconv .ServiceVersion (serviceVersion ),
286
- ))
281
+ func newResource (logger * slog.Logger , serviceName , serviceVersion string ) * resource.Resource {
282
+ attrs := resource .NewWithAttributes (semconv .SchemaURL ,
283
+ semconv .ServiceName (serviceName ),
284
+ semconv .ServiceVersion (serviceVersion ),
285
+ )
286
+ res , err := resource .Merge (resource .Default (), attrs )
287
+ if err != nil {
288
+ logger .Warn (err .Error ())
289
+ return attrs
290
+ }
291
+ return res
287
292
}
288
293
289
294
func newPropagator () propagation.TextMapPropagator {
0 commit comments