/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Host.PostgreSQL/Configuring/OpenTelemetryConfiguration.cs
59 строк
3 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using Gridient.Host.Options; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using OpenTelemetry.Exporter; using OpenTelemetry.Metrics; using OpenTelemetry.Resources; using OpenTelemetry.Trace; namespace Gridient.Configuring { public static class OpenTelemetryConfiguration { /// <summary> /// Настраивает OpenTelemetry для трассировки и метрик. /// </summary> public static IServiceCollection AddGridientOpenTelemetry( this IServiceCollection services, IConfiguration configuration) { services.Configure<OpenTelemetryOptions>(configuration.GetSection("OpenTelemetry")); var openTelemetryOptions = configuration.GetSection("OpenTelemetry").Get<OpenTelemetryOptions>() ?? new OpenTelemetryOptions(); services.AddOpenTelemetry() .ConfigureResource(resource => resource.AddService("GridientService")) .WithTracing(tracerProviderBuilder => tracerProviderBuilder .SetSampler(new ParentBasedSampler(new TraceIdRatioBasedSampler(openTelemetryOptions.SamplingRatio))) .AddSource("GridientService.Repository") .AddAspNetCoreInstrumentation(op => { op.Filter = context => !context.Request.Path.StartsWithSegments("/tracing"); }) .AddHttpClientInstrumentation() .AddEntityFrameworkCoreInstrumentation(options => { options.EnrichWithIDbCommand = (activity, command) => { activity.SetTag("db.SQL", command.CommandText); activity.SetTag("ef.operation", true); }; }) .AddOtlpExporter(o => { o.Endpoint = new Uri("http://jaeger:4317"); o.Protocol = OtlpExportProtocol.Grpc; }) ) .WithMetrics(metricsBuilder => metricsBuilder .AddAspNetCoreInstrumentation() .AddHttpClientInstrumentation() .AddRuntimeInstrumentation() .AddProcessInstrumentation() .AddMeter("GridientService") .AddPrometheusExporter() ); return services; } } }