diff --git a/src/Services/Basket/Basket.API/Basket.API.csproj b/src/Services/Basket/Basket.API/Basket.API.csproj
index 8f4f3ce51..5f1065e36 100644
--- a/src/Services/Basket/Basket.API/Basket.API.csproj
+++ b/src/Services/Basket/Basket.API/Basket.API.csproj
@@ -46,6 +46,7 @@
+
diff --git a/src/Services/Basket/Basket.API/OpenTelemetry.cs b/src/Services/Basket/Basket.API/OpenTelemetry.cs
index 74944607f..de5e0fe0e 100644
--- a/src/Services/Basket/Basket.API/OpenTelemetry.cs
+++ b/src/Services/Basket/Basket.API/OpenTelemetry.cs
@@ -43,6 +43,13 @@ static class OpenTelemetryExtensions
options.Headers = headers;
});
break;
+ case "zipkin":
+ tracerProviderBuilder.AddZipkinExporter(options =>
+ {
+ var endpoint = Environment.GetEnvironmentVariable("OTEL_EXPORTER_ZIPKIN_ENDPOINT");
+ options.Endpoint = new Uri(endpoint);
+ });
+ break;
default:
tracerProviderBuilder.AddConsoleExporter();
break;
diff --git a/src/Web/WebMVC/OpenTelemetry.cs b/src/Web/WebMVC/OpenTelemetry.cs
index d0672cba7..8f6614bf4 100644
--- a/src/Web/WebMVC/OpenTelemetry.cs
+++ b/src/Web/WebMVC/OpenTelemetry.cs
@@ -39,6 +39,13 @@ static class OpenTelemetryExtensions
options.Headers = headers;
});
break;
+ case "zipkin":
+ tracerProviderBuilder.AddZipkinExporter(options =>
+ {
+ var endpoint = Environment.GetEnvironmentVariable("OTEL_EXPORTER_ZIPKIN_ENDPOINT");
+ options.Endpoint = new Uri(endpoint);
+ });
+ break;
default:
tracerProviderBuilder.AddConsoleExporter();
break;
diff --git a/src/Web/WebMVC/WebMVC.csproj b/src/Web/WebMVC/WebMVC.csproj
index 2ac17c35e..a746427e2 100644
--- a/src/Web/WebMVC/WebMVC.csproj
+++ b/src/Web/WebMVC/WebMVC.csproj
@@ -48,6 +48,7 @@
+
diff --git a/src/docker-compose.opentelemetry.zipkin.yml b/src/docker-compose.opentelemetry.zipkin.yml
new file mode 100644
index 000000000..a682ca555
--- /dev/null
+++ b/src/docker-compose.opentelemetry.zipkin.yml
@@ -0,0 +1,22 @@
+version: '3.4'
+
+# The OpenTelemetry docker-compose file is used to configure OpenTelemetry for the services
+#
+# You need to start it with the following CLI command:
+# docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.opentelemetry.zipkin.yml up
+
+services:
+ zipkin:
+ image: openzipkin/zipkin:latest
+ ports:
+ - "9411:9411"
+
+ basket-api:
+ environment:
+ - OTEL_USE_EXPORTER=zipkin
+ - OTEL_EXPORTER_ZIPKIN_ENDPOINT=${OTEL_EXPORTER_ZIPKIN_ENDPOINT:-http://zipkin:9411/api/v2/spans}
+
+ webmvc:
+ environment:
+ - OTEL_USE_EXPORTER=zipkin
+ - OTEL_EXPORTER_ZIPKIN_ENDPOINT=${OTEL_EXPORTER_ZIPKIN_ENDPOINT:-http://zipkin:9411/api/v2/spans}