opentracing и jaeger в приложении .netcore 2.1? - PullRequest
0 голосов
/ 26 сентября 2018

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

1 Ответ

0 голосов
/ 05 августа 2019

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

  1. Common Открытая библиотека , состоит из абстрактного слоя для span, tracer, инжекторов иэкстракторы и т. д.

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

  3. Последний элемент - OpenTracingAPI для .NET , который является связующим звеном между открытой библиотекой и DiagnosticSource в dotnet.

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

В остальном в вашем Startup.cs вы получите что-то похожее из этого примера (services is 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));
        });
...