我们的应用程序由用于UI的angular 6和用于后端的.netcore 2.0组成,希望实现对其的跟踪,到目前为止,opentracing似乎是最主要的,但是我似乎找不到关于.netcore的任何有用的帮助文档。 2.0应用。
答案 0 :(得分:0)
有几个组件可以协同工作,完全可以满足您的需求。
公用opentracing library,由跨度,示踪剂,注入器和提取器等的抽象层组成。
官方jaeger-client-csharp。可以找到here的完整客户端列表,它们实现了前面提到的opentracing abstraction layer。
最后一个是OpenTracing API for .NET,它是dotnet中opentracing library和DiagnosticSource概念之间的粘合剂。
实际上,最终库具有sample,该库使用jaeger csharp实现的ITracer实现并将其配置为默认的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));
});