Skip to content

Commit f6093ca

Browse files
authored
ignore OpenTelemetry resources merging error (#146)
1 parent 2cd5523 commit f6093ca

File tree

2 files changed

+27
-22
lines changed

2 files changed

+27
-22
lines changed

connector/cli.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type ConnectorCLI interface {
4747
// This should be the entrypoint of your connector
4848
func Start[Configuration any, State any](connector Connector[Configuration, State], options ...ServeOption) error {
4949
var cli ServeCLI
50-
return StartCustom[Configuration, State](&cli, connector)
50+
return StartCustom[Configuration, State](&cli, connector, options...)
5151
}
5252

5353
// Starts the connector with custom CLI.

connector/telemetry.go

+26-21
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,13 @@ type OTLPConfig struct {
7373
OtlpProtocol string `help:"OpenTelemetry receiver protocol for all types." env:"OTEL_EXPORTER_OTLP_PROTOCOL"`
7474
OtlpTracesProtocol string `help:"OpenTelemetry receiver protocol for traces." env:"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL"`
7575
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"`
7979

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"`
8283
}
8384

8485
// TelemetryState contains OpenTelemetry exporters and basic connector metrics
@@ -120,10 +121,7 @@ func SetupOTelExporters(ctx context.Context, config *OTLPConfig, serviceVersion,
120121
metricsEndpoint := utils.GetDefault(config.OtlpMetricsEndpoint, config.OtlpEndpoint)
121122

122123
// 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)
127125

128126
var traceProvider *trace.TracerProvider
129127
if tracesEndpoint != "" {
@@ -181,7 +179,7 @@ func SetupOTelExporters(ctx context.Context, config *OTLPConfig, serviceVersion,
181179
trace.WithBatcher(traceExporter, trace.WithBatchTimeout(5*time.Second)),
182180
)
183181
} else {
184-
traceProvider = trace.NewTracerProvider()
182+
traceProvider = trace.NewTracerProvider(trace.WithResource(res))
185183
}
186184
otel.SetTracerProvider(traceProvider)
187185

@@ -193,9 +191,11 @@ func SetupOTelExporters(ctx context.Context, config *OTLPConfig, serviceVersion,
193191

194192
metricOptions := []metric.Option{metric.WithResource(res)}
195193

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+
}
199199

200200
switch metricsExporterType {
201201
case otelMetricsExporterPrometheus:
@@ -270,20 +270,25 @@ func SetupOTelExporters(ctx context.Context, config *OTLPConfig, serviceVersion,
270270
}
271271

272272
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)),
275275
Shutdown: shutdownFunc,
276276
}
277277

278278
return state, err
279279
}
280280

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
287292
}
288293

289294
func newPropagator() propagation.TextMapPropagator {

0 commit comments

Comments
 (0)