JJ Colocate
This commit is contained in:
@@ -1,73 +1,73 @@
|
||||
#nullable enable
|
||||
|
||||
using AobaServer.Middleware;
|
||||
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Routing;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using OpenTelemetry;
|
||||
using OpenTelemetry.Metrics;
|
||||
using OpenTelemetry.Resources;
|
||||
using OpenTelemetry.Trace;
|
||||
|
||||
|
||||
namespace AobaServer.Middleware;
|
||||
|
||||
public static class OpenTelemetry
|
||||
{
|
||||
public static void AddObersability(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
var otel = services.AddOpenTelemetry();
|
||||
|
||||
otel.ConfigureResource(res =>
|
||||
{
|
||||
res.AddService(serviceName: $"Breeze: {Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}");
|
||||
});
|
||||
|
||||
|
||||
// Add Metrics for ASP.NET Core and our custom metrics and export to Prometheus
|
||||
otel.WithMetrics(metrics => metrics
|
||||
// Metrics provider from OpenTelemetry
|
||||
.AddAspNetCoreInstrumentation()
|
||||
.AddCustomMetrics()
|
||||
// Metrics provides by ASP.NET Core in .NET 8
|
||||
.AddMeter("Microsoft.AspNetCore.Hosting")
|
||||
.AddMeter("Microsoft.AspNetCore.Server.Kestrel")
|
||||
// Metrics provided by System.Net libraries
|
||||
.AddMeter("System.Net.Http")
|
||||
.AddMeter("System.Net.NameResolution")
|
||||
.AddPrometheusExporter());
|
||||
|
||||
// Add Tracing for ASP.NET Core and our custom ActivitySource and export to Jaeger
|
||||
var tracingOtlpEndpoint = configuration["OTLP_ENDPOINT_URL"];
|
||||
otel.WithTracing(tracing =>
|
||||
{
|
||||
tracing.AddSource("MongoDB.Driver.Core.Extensions.DiagnosticSources");
|
||||
tracing.AddAspNetCoreInstrumentation();
|
||||
tracing.AddHttpClientInstrumentation();
|
||||
if (!string.IsNullOrWhiteSpace(tracingOtlpEndpoint))
|
||||
{
|
||||
tracing.AddOtlpExporter(otlpOptions =>
|
||||
{
|
||||
otlpOptions.Endpoint = new Uri(tracingOtlpEndpoint);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public static MeterProviderBuilder AddCustomMetrics(this MeterProviderBuilder builder)
|
||||
{
|
||||
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
public static IEndpointRouteBuilder MapObserability(this IEndpointRouteBuilder endpoints)
|
||||
{
|
||||
endpoints.MapPrometheusScrapingEndpoint().RequireAuthorization();
|
||||
return endpoints;
|
||||
}
|
||||
}
|
||||
#nullable enable
|
||||
|
||||
using AobaServer.Middleware;
|
||||
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Routing;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using OpenTelemetry;
|
||||
using OpenTelemetry.Metrics;
|
||||
using OpenTelemetry.Resources;
|
||||
using OpenTelemetry.Trace;
|
||||
|
||||
|
||||
namespace AobaServer.Middleware;
|
||||
|
||||
public static class OpenTelemetry
|
||||
{
|
||||
public static void AddObersability(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
var otel = services.AddOpenTelemetry();
|
||||
|
||||
otel.ConfigureResource(res =>
|
||||
{
|
||||
res.AddService(serviceName: $"Breeze: {Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}");
|
||||
});
|
||||
|
||||
|
||||
// Add Metrics for ASP.NET Core and our custom metrics and export to Prometheus
|
||||
otel.WithMetrics(metrics => metrics
|
||||
// Metrics provider from OpenTelemetry
|
||||
.AddAspNetCoreInstrumentation()
|
||||
.AddCustomMetrics()
|
||||
// Metrics provides by ASP.NET Core in .NET 8
|
||||
.AddMeter("Microsoft.AspNetCore.Hosting")
|
||||
.AddMeter("Microsoft.AspNetCore.Server.Kestrel")
|
||||
// Metrics provided by System.Net libraries
|
||||
.AddMeter("System.Net.Http")
|
||||
.AddMeter("System.Net.NameResolution")
|
||||
.AddPrometheusExporter());
|
||||
|
||||
// Add Tracing for ASP.NET Core and our custom ActivitySource and export to Jaeger
|
||||
var tracingOtlpEndpoint = configuration["OTLP_ENDPOINT_URL"];
|
||||
otel.WithTracing(tracing =>
|
||||
{
|
||||
tracing.AddSource("MongoDB.Driver.Core.Extensions.DiagnosticSources");
|
||||
tracing.AddAspNetCoreInstrumentation();
|
||||
tracing.AddHttpClientInstrumentation();
|
||||
if (!string.IsNullOrWhiteSpace(tracingOtlpEndpoint))
|
||||
{
|
||||
tracing.AddOtlpExporter(otlpOptions =>
|
||||
{
|
||||
otlpOptions.Endpoint = new Uri(tracingOtlpEndpoint);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public static MeterProviderBuilder AddCustomMetrics(this MeterProviderBuilder builder)
|
||||
{
|
||||
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
public static IEndpointRouteBuilder MapObserability(this IEndpointRouteBuilder endpoints)
|
||||
{
|
||||
endpoints.MapPrometheusScrapingEndpoint().RequireAuthorization();
|
||||
return endpoints;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user