diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b978ecec..9e5372b3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,6 +49,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ### Changed +- Modify Zipkin Exporter default service name, use default resouce's serviceName instead of empty. (#1777) - Updated Jaeger Environment Variables: `JAEGER_ENDPOINT`, `JAEGER_USER`, `JAEGER_PASSWORD` to `OTEL_EXPORTER_JAEGER_ENDPOINT`, `OTEL_EXPORTER_JAEGER_USER`, `OTEL_EXPORTER_JAEGER_PASSWORD` in compliance with OTel spec (#1752) diff --git a/exporters/trace/zipkin/model.go b/exporters/trace/zipkin/model.go index f3a2dde17..bcf7558b1 100644 --- a/exporters/trace/zipkin/model.go +++ b/exporters/trace/zipkin/model.go @@ -21,14 +21,16 @@ import ( "net" "strconv" - zkmodel "github.com/openzipkin/zipkin-go/model" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" - sdktrace "go.opentelemetry.io/otel/sdk/trace" - tracesdk "go.opentelemetry.io/otel/sdk/trace" + "go.opentelemetry.io/otel/sdk/resource" "go.opentelemetry.io/otel/semconv" "go.opentelemetry.io/otel/trace" + + zkmodel "github.com/openzipkin/zipkin-go/model" + + sdktrace "go.opentelemetry.io/otel/sdk/trace" + tracesdk "go.opentelemetry.io/otel/sdk/trace" ) const ( @@ -39,6 +41,16 @@ const ( keyPeerAddress attribute.Key = "peer.address" ) +var defaultServiceName string + +func init() { + // fetch service.name from default resource for backup + defaultResource := resource.Default() + if value, exists := defaultResource.Set().Value(semconv.ServiceNameKey); exists { + defaultServiceName = value.AsString() + } +} + func toZipkinSpanModels(batch []*tracesdk.SpanSnapshot) []zkmodel.SpanModel { models := make([]zkmodel.SpanModel, 0, len(batch)) for _, data := range batch { @@ -54,8 +66,7 @@ func getServiceName(attrs []attribute.KeyValue) string { } } - // Resource holds a default value so this might not be reach. - return "" + return defaultServiceName } func toZipkinSpanModel(data *tracesdk.SpanSnapshot) zkmodel.SpanModel { diff --git a/exporters/trace/zipkin/model_test.go b/exporters/trace/zipkin/model_test.go index fffe1fb5d..6e1e7789f 100644 --- a/exporters/trace/zipkin/model_test.go +++ b/exporters/trace/zipkin/model_test.go @@ -954,10 +954,10 @@ func TestRemoteEndpointTransformation(t *testing.T) { func TestServiceName(t *testing.T) { attrs := []attribute.KeyValue{} - assert.Empty(t, getServiceName(attrs)) + assert.Equal(t, defaultServiceName, getServiceName(attrs)) attrs = append(attrs, attribute.String("test_key", "test_value")) - assert.Empty(t, getServiceName(attrs)) + assert.Equal(t, defaultServiceName, getServiceName(attrs)) attrs = append(attrs, semconv.ServiceNameKey.String("my_service")) assert.Equal(t, "my_service", getServiceName(attrs))