我们的应用程序由 UI 的 Angular 6 和后端的 .netcore 2.0 组成,希望实现对其的跟踪,到目前为止,opentracing 似乎是最突出的,但我似乎找不到任何好的 .netcore 2.0 应用程序的帮助文档。
问问题
424 次
1 回答
1
有几个组件协同工作,可以完全满足您的要求。
常用的opentracing库,由span、tracer、injectors和extractors等抽象层组成。
官方jaeger-client-csharp。完整的客户端列表可以在这里找到,它们实现了前面提到的opentracing 抽象层。
最后一部分是.NET 的 OpenTracing API,它是dotnet 中opentracing 库和DiagnosticSource概念之间的粘合剂。
实际上,最终的库有一个使用 ITracer 的 jaeger csharp 实现并将其配置为默认 GlobalTracer 的示例。
在您的 Startup.cs 中的其余部分,您最终会得到类似于该示例的内容(服务是 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));
});
于 2019-08-05T19:22:29.490 回答