Included feedback
This commit is contained in:
parent
911a5c52be
commit
6946735458
@ -17,7 +17,8 @@ namespace OpenTelemetry.Customization.Extensions
|
||||
}
|
||||
|
||||
return services.AddOpenTelemetryTracing((serviceProvider, tracerProviderBuilder) =>
|
||||
{
|
||||
{
|
||||
|
||||
// Configure resource
|
||||
tracerProviderBuilder
|
||||
.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)
|
||||
{
|
||||
return;
|
||||
return services;
|
||||
}
|
||||
|
||||
var tracerProviderBuilder = Sdk.CreateTracerProviderBuilder();
|
||||
return services.AddOpenTelemetryTracing((serviceProvider, tracerProviderBuilder) =>
|
||||
{
|
||||
|
||||
// Configure resource
|
||||
tracerProviderBuilder
|
||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(openTelemetryConfig.ServiceName));
|
||||
// Configure resource
|
||||
tracerProviderBuilder
|
||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(openTelemetryConfig.ServiceName));
|
||||
|
||||
// Configure instrumentation
|
||||
tracerProviderBuilder
|
||||
.AddAspNetCoreInstrumentation()
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddRedisInstrumentation(connectionMultiplexer);
|
||||
// Configure instrumentation
|
||||
tracerProviderBuilder
|
||||
.AddAspNetCoreInstrumentation()
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddGrpcClientInstrumentation()
|
||||
.AddRedisInstrumentation(connectionMultiplexer);
|
||||
|
||||
// Configure exporter
|
||||
switch (openTelemetryConfig.ExportType)
|
||||
{
|
||||
case "jaeger":
|
||||
tracerProviderBuilder.AddJaegerExporter(options =>
|
||||
{
|
||||
options.AgentHost = openTelemetryConfig.ExportToolEndpoint;
|
||||
});
|
||||
break;
|
||||
case "otlp":
|
||||
tracerProviderBuilder.AddOtlpExporter(options =>
|
||||
{
|
||||
options.Endpoint = new Uri(openTelemetryConfig.ExportToolEndpoint);
|
||||
// Configure exporter
|
||||
switch (openTelemetryConfig.ExportType)
|
||||
{
|
||||
case "jaeger":
|
||||
tracerProviderBuilder.AddJaegerExporter(options =>
|
||||
{
|
||||
options.AgentHost = openTelemetryConfig.ExportToolEndpoint;
|
||||
});
|
||||
break;
|
||||
case "otlp":
|
||||
tracerProviderBuilder.AddOtlpExporter(options =>
|
||||
{
|
||||
options.Endpoint = new Uri(openTelemetryConfig.ExportToolEndpoint);
|
||||
|
||||
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(openTelemetryConfig.ExportToolEndpoint);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
tracerProviderBuilder.AddConsoleExporter();
|
||||
break;
|
||||
}
|
||||
|
||||
tracerProviderBuilder.Build();
|
||||
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(openTelemetryConfig.ExportToolEndpoint);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
tracerProviderBuilder.AddConsoleExporter();
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,11 +38,16 @@ using System.IO;
|
||||
|
||||
namespace Microsoft.eShopOnContainers.Services.Basket.API
|
||||
{
|
||||
|
||||
public class Startup
|
||||
{
|
||||
|
||||
private ConnectionMultiplexer _connectionMultiplexer;
|
||||
|
||||
public Startup(IConfiguration configuration)
|
||||
{
|
||||
Configuration = configuration;
|
||||
|
||||
}
|
||||
|
||||
public IConfiguration Configuration { get; }
|
||||
@ -53,15 +58,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
|
||||
services.AddGrpc(options =>
|
||||
{
|
||||
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);
|
||||
|
||||
@ -115,7 +112,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
|
||||
//but given that there is a delay on resolving the ip address
|
||||
//and then creating the connection it seems reasonable to move
|
||||
//that cost to startup instead of having the first request pay the
|
||||
//penalty.
|
||||
//penalty.
|
||||
services.AddSingleton<ConnectionMultiplexer>(sp =>
|
||||
{
|
||||
var settings = sp.GetRequiredService<IOptions<BasketSettings>>().Value;
|
||||
@ -123,7 +120,17 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
|
||||
|
||||
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