我们的应用程序由用于UI的angular 6和用于后端的.netcore 2.0组成,希望实现对它的跟踪,到目前为止,openttrace似乎是最突出的,但我似乎找不到任何好的.netcore 2.0应用程序的帮助文档。
有几个组件可以协同工作,可以完全满足您的要求。
-
常见的开放跟踪库,由跨度、示踪剂、注入器和提取器等的抽象层组成。
-
官方积家客户。完整的客户端列表可以在这里找到,它们实现了前面提到的开放跟踪抽象层。
-
最后一块是 .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));
});