diff --git a/Package.swift b/Package.swift index 10cee5a..4769ae5 100644 --- a/Package.swift +++ b/Package.swift @@ -48,6 +48,7 @@ let package = Package( .product(name: "OpenTelemetryApi", package: "opentelemetry-swift-core"), .product(name: "OpenTelemetrySdk", package: "opentelemetry-swift-core"), .product(name: "OpenTelemetryProtocolExporterHTTP", package: "opentelemetry-swift"), + .product(name: "ResourceExtension", package: "opentelemetry-swift"), ], exclude: [ "OCI/Reference/Makefile", "OCI/Reference/Reference.g4", diff --git a/Sources/tart/OTel.swift b/Sources/tart/OTel.swift index f34c89a..9106b74 100644 --- a/Sources/tart/OTel.swift +++ b/Sources/tart/OTel.swift @@ -2,6 +2,7 @@ import Foundation import OpenTelemetryApi import OpenTelemetrySdk import OpenTelemetryProtocolExporterHttp +import ResourceExtension class OTel { let tracerProvider: TracerProviderSdk? @@ -19,6 +20,13 @@ class OTel { return nil } + var resource = DefaultResources().get() + + resource.merge(other: Resource(attributes: [ + SemanticConventions.Service.name.rawValue: .string("tart"), + SemanticConventions.Service.version.rawValue: .string(CI.version) + ])) + let spanExporter: SpanExporter if let endpointRaw = ProcessInfo.processInfo.environment["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"], let endpoint = URL(string: endpointRaw) { @@ -27,7 +35,10 @@ class OTel { spanExporter = OtlpHttpTraceExporter() } let spanProcessor = SimpleSpanProcessor(spanExporter: spanExporter) - let tracerProvider = TracerProviderBuilder().add(spanProcessor: spanProcessor).build() + let tracerProvider = TracerProviderBuilder() + .add(spanProcessor: spanProcessor) + .with(resource: resource) + .build() OpenTelemetry.registerTracerProvider(tracerProvider: tracerProvider)