opentracing и jaeger в приложении.netcore 2.1?

Наше приложение состоит из угловых 6 для пользовательского интерфейса и.netcore 2.0 для серверной части, нацеленной на то, чтобы реализовать трассировку к нему, и до сих пор opentracing кажется наиболее заметным, но я не могу найти хорошую справочную документацию для приложений.netcore 2.0.

0 ответов

Есть несколько компонентов, которые работают вместе и могут полностью удовлетворить ваши требования.

  1. Общая библиотека opentracing, состоящая из абстрактного слоя для диапазона, трассировщика, инжекторов и экстракторов и т. Д.

  2. Официальный jaeger-client-csharp. Полный список клиентов можно найти здесь, реализующее opentracing слоя абстракции упоминался ранее.

  3. Последней частью является OpenTracing API для.NET, который является связующим звеном между библиотекой opentracing и концепцией DiagnosticSource в dotnet.

Фактически, в последней библиотеке есть образец, который использует jaeger csharp реализацию ITracer и настраивает его как GlobalTracer по умолчанию.

В остальном в вашем Startup.cs вы получите что-то вроде этого образца (services - IServiceCollection):

services.AddSingleton<ITracer>(serviceProvider =>
{
    string serviceName = Assembly.GetEntryAssembly().GetName().Name;

    ILoggerFactory loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();

    ISampler sampler = new ConstSampler(sample: true);

    ITracer tracer = new Tracer.Builder(serviceName)
        .WithLoggerFactory(loggerFactory)
        .WithSampler(sampler)
        .Build();

    GlobalTracer.Register(tracer);

    return tracer;
});

// Prevent endless loops when OpenTracing is tracking HTTP requests to Jaeger.
services.Configure<HttpHandlerDiagnosticOptions>(options =>
{
    options.IgnorePatterns.Add(request => _jaegerUri.IsBaseOf(request.RequestUri));
});
Другие вопросы по тегам