diff --git a/cmd/root/otel.go b/cmd/root/otel.go index d5dc5f4aa..5af980db2 100644 --- a/cmd/root/otel.go +++ b/cmd/root/otel.go @@ -12,21 +12,14 @@ import ( "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp" "go.opentelemetry.io/otel/sdk/resource" "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.37.0" + semconv "go.opentelemetry.io/otel/semconv/v1.40.0" ) const AppName = "cagent" // initOTelSDK initializes OpenTelemetry SDK with OTLP exporter func initOTelSDK(ctx context.Context) (err error) { - res, err := resource.Merge( - resource.Default(), - resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceName(AppName), - semconv.ServiceVersion("dev"), // TODO: use actual version - ), - ) + res, err := newOTelResource() if err != nil { return fmt.Errorf("failed to create resource: %w", err) } @@ -75,6 +68,17 @@ func initOTelSDK(ctx context.Context) (err error) { return nil } +func newOTelResource() (*resource.Resource, error) { + return resource.Merge( + resource.Default(), + resource.NewWithAttributes( + semconv.SchemaURL, + semconv.ServiceName(AppName), + semconv.ServiceVersion("dev"), // TODO: use actual version + ), + ) +} + // isLocalhostEndpoint reports whether the given endpoint refers to a // loopback address so that we can safely skip TLS. func isLocalhostEndpoint(endpoint string) bool { diff --git a/cmd/root/otel_test.go b/cmd/root/otel_test.go index cd024f868..042973a9e 100644 --- a/cmd/root/otel_test.go +++ b/cmd/root/otel_test.go @@ -4,8 +4,18 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + semconv "go.opentelemetry.io/otel/semconv/v1.40.0" ) +func TestNewOTelResourceUsesCurrentSchemaURL(t *testing.T) { + t.Parallel() + + res, err := newOTelResource() + require.NoError(t, err) + assert.Equal(t, semconv.SchemaURL, res.SchemaURL()) +} + func TestIsLocalhostEndpoint(t *testing.T) { t.Parallel()