使用应用程序洞察跟踪自定义活动源



我试图获得应用程序洞察力,以在库中选择自定义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();

然而,这些活动并没有被应用程序的洞察力所发现。是否还需要其他东西来使应用程序洞察意识到这些活动?

我宁愿不要用应用程序洞察代码"污染"这些库

ApplicationInsights sdk不支持自定义ActivitySource的遥测报告。

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

按照以下步骤操作:

  1. 添加opentelemetri . export . console NuGet包

dotnet add package OpenTelemetry.Exporter.Console

  1. 使用指令为Program.cs添加额外的OpenTelemetry

    using OpenTelemetry;

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

    public static async Task 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

您将得到所需的结果。

参考以下链接:https://learn.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing-collection-walkthrouli

最新更新