Azure.Monitor.OpenTelemetry.AspNetCore 1.2.0
嗨,
序言 我们使用内置的 .NET Core 身份验证/授权以及针对不同 OpenID 提供商的多种方案。每次我请求 API 时,第一个调用都会向所有 OpenID 提供商的“.wellknown”端点发出请求。到目前为止还可以。但它会为 Application Insights 中的每个操作创建请求和依赖项跟踪。这些痕迹与我们完全无关,我们想过滤它们。我遵循了你的指南并做了这样的事情:
builder.Services.AddOpenTelemetry().UseAzureMonitor();
builder.Services.Configure<HttpClientTraceInstrumentationOptions>(options =>
{
options.FilterHttpRequestMessage = req =>
!req.RequestUri.ToString().Contains(".well-known");
});
问题
问题
IsAllDataRequested = false
创建了 ActivityFilteringProcessor,但它并没有完全过滤掉痕迹。BR
Windows 10
Visual Studio 2022 17.10.1
.NET SDK: 版本:8.0.300 提交:326f6e68b2 工作负载版本:8.0.300-manifests.4e5ea2d8 MSBuild版本:17.10.4+10fbfbf2e
运行环境: 操作系统名称:Windows 操作系统版本:10.0.19045 操作系统平台:Windows RID:win-x64 基本路径:C:\Program Files\dotnet\sdk\8.0.300\
好吧,没花太长时间,但我终于成功了。
internal class OpenIdFilteringProcessor : BaseProcessor<Activity>
{
public override void OnEnd(Activity data)
{
if (data.Kind == ActivityKind.Client && data.GetTagItem("url.full") is string url && url.Contains(".well-known"))
{
data.ActivityTraceFlags &= ~ActivityTraceFlags.Recorded;
}
}
}
(...)
builder.Services.ConfigureOpenTelemetryTracerProvider(builder => builder.AddProcessor<OpenIdFilteringProcessor>());
builder.Services.AddOpenTelemetry().UseAzureMonitor();