From 1be1c395c5fa12afd147f782b0be390f010601ed Mon Sep 17 00:00:00 2001 From: Alan West <3676547+alanwest@users.noreply.github.com> Date: Thu, 11 Mar 2021 15:58:31 -0800 Subject: [PATCH] Add Zipkin export --- .../Basket/Basket.API/Basket.API.csproj | 1 + .../Basket/Basket.API/OpenTelemetry.cs | 7 ++++++ src/Web/WebMVC/OpenTelemetry.cs | 7 ++++++ src/Web/WebMVC/WebMVC.csproj | 1 + src/docker-compose.opentelemetry.zipkin.yml | 22 +++++++++++++++++++ 5 files changed, 38 insertions(+) create mode 100644 src/docker-compose.opentelemetry.zipkin.yml 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}