Included feedback
This commit is contained in:
parent
911a5c52be
commit
6946735458
@ -17,7 +17,8 @@ namespace OpenTelemetry.Customization.Extensions
|
|||||||
}
|
}
|
||||||
|
|
||||||
return services.AddOpenTelemetryTracing((serviceProvider, tracerProviderBuilder) =>
|
return services.AddOpenTelemetryTracing((serviceProvider, tracerProviderBuilder) =>
|
||||||
{
|
{
|
||||||
|
|
||||||
// Configure resource
|
// Configure resource
|
||||||
tracerProviderBuilder
|
tracerProviderBuilder
|
||||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(openTelemetryConfig.ServiceName));
|
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(openTelemetryConfig.ServiceName));
|
||||||
@ -61,57 +62,59 @@ namespace OpenTelemetry.Customization.Extensions
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AddOpenTelemetry(ConnectionMultiplexer connectionMultiplexer, OpenTelemetryConfig openTelemetryConfig)
|
public static IServiceCollection AddOpenTelemetry(this IServiceCollection services, ConnectionMultiplexer connectionMultiplexer, OpenTelemetryConfig openTelemetryConfig)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (openTelemetryConfig == null || openTelemetryConfig.ExportType == null)
|
if (openTelemetryConfig == null || openTelemetryConfig.ExportType == null)
|
||||||
{
|
{
|
||||||
return;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
var tracerProviderBuilder = Sdk.CreateTracerProviderBuilder();
|
return services.AddOpenTelemetryTracing((serviceProvider, tracerProviderBuilder) =>
|
||||||
|
{
|
||||||
|
|
||||||
// Configure resource
|
// Configure resource
|
||||||
tracerProviderBuilder
|
tracerProviderBuilder
|
||||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(openTelemetryConfig.ServiceName));
|
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(openTelemetryConfig.ServiceName));
|
||||||
|
|
||||||
// Configure instrumentation
|
// Configure instrumentation
|
||||||
tracerProviderBuilder
|
tracerProviderBuilder
|
||||||
.AddAspNetCoreInstrumentation()
|
.AddAspNetCoreInstrumentation()
|
||||||
.AddHttpClientInstrumentation()
|
.AddHttpClientInstrumentation()
|
||||||
.AddRedisInstrumentation(connectionMultiplexer);
|
.AddGrpcClientInstrumentation()
|
||||||
|
.AddRedisInstrumentation(connectionMultiplexer);
|
||||||
|
|
||||||
// Configure exporter
|
// Configure exporter
|
||||||
switch (openTelemetryConfig.ExportType)
|
switch (openTelemetryConfig.ExportType)
|
||||||
{
|
{
|
||||||
case "jaeger":
|
case "jaeger":
|
||||||
tracerProviderBuilder.AddJaegerExporter(options =>
|
tracerProviderBuilder.AddJaegerExporter(options =>
|
||||||
{
|
{
|
||||||
options.AgentHost = openTelemetryConfig.ExportToolEndpoint;
|
options.AgentHost = openTelemetryConfig.ExportToolEndpoint;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "otlp":
|
case "otlp":
|
||||||
tracerProviderBuilder.AddOtlpExporter(options =>
|
tracerProviderBuilder.AddOtlpExporter(options =>
|
||||||
{
|
{
|
||||||
options.Endpoint = new Uri(openTelemetryConfig.ExportToolEndpoint);
|
options.Endpoint = new Uri(openTelemetryConfig.ExportToolEndpoint);
|
||||||
|
|
||||||
var headers = Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_TRACES_HEADERS")
|
var headers = Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_TRACES_HEADERS")
|
||||||
?? Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_HEADERS");
|
?? Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_HEADERS");
|
||||||
options.Headers = headers;
|
options.Headers = headers;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "zipkin":
|
case "zipkin":
|
||||||
tracerProviderBuilder.AddZipkinExporter(options =>
|
tracerProviderBuilder.AddZipkinExporter(options =>
|
||||||
{
|
{
|
||||||
options.Endpoint = new Uri(openTelemetryConfig.ExportToolEndpoint);
|
options.Endpoint = new Uri(openTelemetryConfig.ExportToolEndpoint);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tracerProviderBuilder.AddConsoleExporter();
|
tracerProviderBuilder.AddConsoleExporter();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
tracerProviderBuilder.Build();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,11 +38,16 @@ using System.IO;
|
|||||||
|
|
||||||
namespace Microsoft.eShopOnContainers.Services.Basket.API
|
namespace Microsoft.eShopOnContainers.Services.Basket.API
|
||||||
{
|
{
|
||||||
|
|
||||||
public class Startup
|
public class Startup
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private ConnectionMultiplexer _connectionMultiplexer;
|
||||||
|
|
||||||
public Startup(IConfiguration configuration)
|
public Startup(IConfiguration configuration)
|
||||||
{
|
{
|
||||||
Configuration = configuration;
|
Configuration = configuration;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IConfiguration Configuration { get; }
|
public IConfiguration Configuration { get; }
|
||||||
@ -53,15 +58,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
|
|||||||
services.AddGrpc(options =>
|
services.AddGrpc(options =>
|
||||||
{
|
{
|
||||||
options.EnableDetailedErrors = true;
|
options.EnableDetailedErrors = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add Telemetry
|
|
||||||
services.AddOpenTelemetry(new OpenTelemetryConfig()
|
|
||||||
{
|
|
||||||
ServiceName = "Basket.API",
|
|
||||||
ExportType = Configuration.GetValue<string>("OTEL_USE_EXPORTER"),
|
|
||||||
ExportToolEndpoint = Configuration.GetValue<string>("OTEL_EXPORTER_TOOL_ENDPOINT")
|
|
||||||
});
|
|
||||||
|
|
||||||
RegisterAppInsights(services);
|
RegisterAppInsights(services);
|
||||||
|
|
||||||
@ -115,7 +112,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
|
|||||||
//but given that there is a delay on resolving the ip address
|
//but given that there is a delay on resolving the ip address
|
||||||
//and then creating the connection it seems reasonable to move
|
//and then creating the connection it seems reasonable to move
|
||||||
//that cost to startup instead of having the first request pay the
|
//that cost to startup instead of having the first request pay the
|
||||||
//penalty.
|
//penalty.
|
||||||
services.AddSingleton<ConnectionMultiplexer>(sp =>
|
services.AddSingleton<ConnectionMultiplexer>(sp =>
|
||||||
{
|
{
|
||||||
var settings = sp.GetRequiredService<IOptions<BasketSettings>>().Value;
|
var settings = sp.GetRequiredService<IOptions<BasketSettings>>().Value;
|
||||||
@ -123,7 +120,17 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
|
|||||||
|
|
||||||
configuration.ResolveDns = true;
|
configuration.ResolveDns = true;
|
||||||
|
|
||||||
return ConnectionMultiplexer.Connect(configuration);
|
_connectionMultiplexer = ConnectionMultiplexer.Connect(configuration);
|
||||||
|
|
||||||
|
return _connectionMultiplexer;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add Telemetry
|
||||||
|
services.AddOpenTelemetry(this._connectionMultiplexer,new OpenTelemetryConfig()
|
||||||
|
{
|
||||||
|
ServiceName = "Basket.API",
|
||||||
|
ExportType = Configuration.GetValue<string>("OTEL_USE_EXPORTER"),
|
||||||
|
ExportToolEndpoint = Configuration.GetValue<string>("OTEL_EXPORTER_TOOL_ENDPOINT")
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,67 +0,0 @@
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using OpenTelemetry;
|
|
||||||
using OpenTelemetry.Resources;
|
|
||||||
using OpenTelemetry.Trace;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Payment.API.Extensions
|
|
||||||
{
|
|
||||||
static class OpenTelemetryExtensions
|
|
||||||
{
|
|
||||||
public static IServiceCollection AddOpenTelemetry(this IServiceCollection services)
|
|
||||||
{
|
|
||||||
var exportType = Environment.GetEnvironmentVariable("OTEL_USE_EXPORTER")?.ToLower();
|
|
||||||
var endpoint = Environment.GetEnvironmentVariable("OTEL_EXPORTER_TOOL_ENDPOINT")?.ToLower();
|
|
||||||
|
|
||||||
if (exportType == null)
|
|
||||||
{
|
|
||||||
return services;
|
|
||||||
}
|
|
||||||
|
|
||||||
return services.AddOpenTelemetryTracing((serviceProvider, tracerProviderBuilder) =>
|
|
||||||
{
|
|
||||||
// Configure resource
|
|
||||||
tracerProviderBuilder
|
|
||||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("Payment.API"));
|
|
||||||
|
|
||||||
// Configure instrumentation
|
|
||||||
tracerProviderBuilder
|
|
||||||
.AddAspNetCoreInstrumentation()
|
|
||||||
.AddHttpClientInstrumentation();
|
|
||||||
|
|
||||||
// Configure exporter
|
|
||||||
switch (exportType)
|
|
||||||
{
|
|
||||||
case "jaeger":
|
|
||||||
tracerProviderBuilder.AddJaegerExporter(options =>
|
|
||||||
{
|
|
||||||
options.AgentHost = endpoint;
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "otlp":
|
|
||||||
tracerProviderBuilder.AddOtlpExporter(options =>
|
|
||||||
{
|
|
||||||
options.Endpoint = new Uri(endpoint);
|
|
||||||
|
|
||||||
var headers = Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_TRACES_HEADERS")
|
|
||||||
?? Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_HEADERS");
|
|
||||||
options.Headers = headers;
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "zipkin":
|
|
||||||
tracerProviderBuilder.AddZipkinExporter(options =>
|
|
||||||
{
|
|
||||||
options.Endpoint = new Uri(endpoint);
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
tracerProviderBuilder.AddConsoleExporter();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using OpenTelemetry.Resources;
|
|
||||||
using OpenTelemetry.Trace;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Microsoft.eShopOnContainers.WebMVC.Extensions
|
|
||||||
{
|
|
||||||
static class OpenTelemetryExtensions
|
|
||||||
{
|
|
||||||
public static IServiceCollection AddOpenTelemetry(this IServiceCollection services)
|
|
||||||
{
|
|
||||||
var exportType = Environment.GetEnvironmentVariable("OTEL_USE_EXPORTER")?.ToLower();
|
|
||||||
if (exportType == null)
|
|
||||||
{
|
|
||||||
return services;
|
|
||||||
}
|
|
||||||
|
|
||||||
return services.AddOpenTelemetryTracing((serviceProvider, tracerProviderBuilder) =>
|
|
||||||
{
|
|
||||||
// Configure resource
|
|
||||||
tracerProviderBuilder
|
|
||||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("WebMVC"));
|
|
||||||
|
|
||||||
// Configure instrumentation
|
|
||||||
tracerProviderBuilder
|
|
||||||
.AddAspNetCoreInstrumentation()
|
|
||||||
.AddHttpClientInstrumentation();
|
|
||||||
|
|
||||||
// Configure exporter
|
|
||||||
switch (exportType)
|
|
||||||
{
|
|
||||||
case "jaeger":
|
|
||||||
tracerProviderBuilder.AddJaegerExporter(options =>
|
|
||||||
{
|
|
||||||
var agentHost = Environment.GetEnvironmentVariable("OTEL_EXPORTER_JAEGER_AGENTHOST");
|
|
||||||
options.AgentHost = agentHost;
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "otlp":
|
|
||||||
tracerProviderBuilder.AddOtlpExporter(options =>
|
|
||||||
{
|
|
||||||
var endpoint = Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT")
|
|
||||||
?? Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT");
|
|
||||||
options.Endpoint = new Uri(endpoint);
|
|
||||||
|
|
||||||
var headers = Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_TRACES_HEADERS")
|
|
||||||
?? Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_HEADERS");
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,69 +0,0 @@
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using OpenTelemetry;
|
|
||||||
using OpenTelemetry.Resources;
|
|
||||||
using OpenTelemetry.Trace;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace WebSPA.Extensions
|
|
||||||
{
|
|
||||||
static class OpenTelemetryExtensions
|
|
||||||
{
|
|
||||||
public static IServiceCollection AddOpenTelemetry(this IServiceCollection services)
|
|
||||||
{
|
|
||||||
var exportType = Environment.GetEnvironmentVariable("OTEL_USE_EXPORTER")?.ToLower();
|
|
||||||
if (exportType == null)
|
|
||||||
{
|
|
||||||
return services;
|
|
||||||
}
|
|
||||||
|
|
||||||
return services.AddOpenTelemetryTracing((serviceProvider, tracerProviderBuilder) =>
|
|
||||||
{
|
|
||||||
// Configure resource
|
|
||||||
tracerProviderBuilder
|
|
||||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("WebSPA"));
|
|
||||||
|
|
||||||
// Configure instrumentation
|
|
||||||
tracerProviderBuilder
|
|
||||||
.AddAspNetCoreInstrumentation()
|
|
||||||
.AddHttpClientInstrumentation();
|
|
||||||
|
|
||||||
// Configure exporter
|
|
||||||
switch (exportType)
|
|
||||||
{
|
|
||||||
case "jaeger":
|
|
||||||
tracerProviderBuilder.AddJaegerExporter(options =>
|
|
||||||
{
|
|
||||||
var agentHost = Environment.GetEnvironmentVariable("OTEL_EXPORTER_JAEGER_AGENTHOST");
|
|
||||||
options.AgentHost = agentHost;
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "otlp":
|
|
||||||
tracerProviderBuilder.AddOtlpExporter(options =>
|
|
||||||
{
|
|
||||||
var endpoint = Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT")
|
|
||||||
?? Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT");
|
|
||||||
options.Endpoint = new Uri(endpoint);
|
|
||||||
|
|
||||||
var headers = Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_TRACES_HEADERS")
|
|
||||||
?? Environment.GetEnvironmentVariable("OTEL_EXPORTER_OTLP_HEADERS");
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user