opentracing и jaeger в приложении.netcore 2.1?
Наше приложение состоит из угловых 6 для пользовательского интерфейса и.netcore 2.0 для серверной части, нацеленной на то, чтобы реализовать трассировку к нему, и до сих пор opentracing кажется наиболее заметным, но я не могу найти хорошую справочную документацию для приложений.netcore 2.0.
0 ответов
Есть несколько компонентов, которые работают вместе и могут полностью удовлетворить ваши требования.
Общая библиотека opentracing, состоящая из абстрактного слоя для диапазона, трассировщика, инжекторов и экстракторов и т. Д.
Официальный jaeger-client-csharp. Полный список клиентов можно найти здесь, реализующее opentracing слоя абстракции упоминался ранее.
Последней частью является 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));
});