我试图获得应用程序洞察力,以在库中选择自定义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
按照以下步骤操作:
- 添加opentelemetri . export . console NuGet包
dotnet add package OpenTelemetry.Exporter.Console
-
使用指令为Program.cs添加额外的OpenTelemetry
using OpenTelemetry;
using OpenTelemetry.Resources; using OpenTelemetry.Trace; using System; using System.Diagnostics; using System.Threading.Tasks;
-
更新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