我使用 OpenTelemetry 收集跟踪并将其发送到 AWS X-Ray。我想排除与 Hangfire 请求相关的跟踪,因为它在 AWS X-Ray Trace Map 中创建新序列
Client -> DB
并每分钟收集 80-100 个请求。正确的序列仍然存在,看起来像 Client -> App -> DB
。我设置OTel的代码:
Sdk.CreateTracerProviderBuilder()
.AddXRayTraceId()
.AddAWSInstrumentation()
.AddAspNetCoreInstrumentation()
.AddHangfireInstrumentation()
.AddHttpClientInstrumentation()
.AddEntityFrameworkCoreInstrumentation()
.AddNpgsql()
.SetResourceBuilder(ResourceBuilder
.CreateDefault()
.AddService(otelOptions.ServiceName)
.AddDetector(new AWSEC2ResourceDetector())
.AddTelemetrySdk())
.AddSource(otelOptions.ServiceName)
.AddOtlpExporter(opts =>
{
opts.Endpoint = new Uri(otelOptions.Endpoint);
})
.Build();
那么如何从跟踪信息中排除 Hangfire 请求呢?
我尝试使用
EntityFrameworkInstrumentationOptions
添加过滤器,也许我在某个地方错了,但它不起作用。我检查了.AddHangfireInstrumentation()
方法并尝试使用HangfireInstrumentationOptions
,但仍然没有结果。
解决方案是不使用
.UseNpgsql()
,因为它会收集所有对数据库的请求:)你可以只使用.AddEntityFrameworkCoreInstrumentation()
。