.netcore 2.1应用程序上的opentracing和jaeger?

时间:2018-09-26 16:08:02

标签: asp.net-core-2.0 opentracing jaeger

我们的应用程序由用于UI的angular 6和用于后端的.netcore 2.0组成,希望实现对其的跟踪,到目前为止,opentracing似乎是最主要的,但是我似乎找不到关于.netcore的任何有用的帮助文档。 2.0应用。

1 个答案:

答案 0 :(得分:0)

有几个组件可以协同工作,完全可以满足您的需求。

  1. 公用opentracing library,由跨度,示踪剂,注入器和提取器等的抽象层组成。

  2. 官方jaeger-client-csharp。可以找到here的完整客户端列表,它们实现了前面提到的opentracing abstraction layer

  3. 最后一个是OpenTracing API for .NET,它是dotnet中opentracing libraryDiagnosticSource概念之间的粘合剂。

实际上,最终库具有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));
});