使用 Application Insights 跟踪自定义 ActivitySource

Track Custom ActivitySource with Application Insights

我正在尝试获取应用程序洞察力以了解库中的自定义 ActivitySource,但是文档不清楚如何实现这一点。

目前我有:

...
public static readonly ActivitySource Source = new ActivitySource("MyCompany.Library");
...

在库中是这样使用的:

using(var activity = Source.StartActivity("Action"))
{
   ...
}

在我的初创公司中,我添加了以下内容:

services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>(
    (m, o) => m.IncludeDiagnosticSourceActivities.Add("MyCompany.Library")
);

services.AddApplicationInsightsTelemetryWorkerService();

但是,这些活动并未被应用程序洞察力所接受。 是否还需要其他东西才能让应用程序洞察了解这些活动?

我不想'pollute'这些带有应用程序洞察代码的库

按照以下步骤操作:

  1. 添加 OpenTelemetry.Exporter.Console NuGet 包。

dotnet add package OpenTelemetry.Exporter.Console

  1. 使用指令

    使用额外的 OpenTelemetry 更新 Program.cs

    using OpenTelemetry;

     using OpenTelemetry.Resources;
    
     using OpenTelemetry.Trace;
    
     using System;
    
     using System.Diagnostics;
    
     using System.Threading.Tasks;
    
  2. 更新 Main() 以创建 OpenTelemetry TracerProvider:

    public 静态异步任务 Main() {

             using var tracerProvider = Sdk.CreateTracerProviderBuilder()
                 .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("MySample"))
    
                 .AddSource("Sample.DistributedTracing")
                 .AddConsoleExporter()
                 .Build();
    
             await DoSomeWork();
             Console.WriteLine("Example work done");
         }
    

现在应用程序收集分布式跟踪信息并将其显示到控制台:

> dotnet run

您将得到所需的结果。

按照以下 link 进一步参考: https://docs.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing-collection-walkthroughs

ApplicationInsights SDK 不支持自定义报告遥测 ActivitySource

有一个预览版支持基于 ActivitySource 的遥测。 (它称为 OpenTelemetry AzureMonitorExporter) https://docs.microsoft.com/azure/azure-monitor/app/opentelemetry-enable?tabs=net