使用UseAzureMonitor与自定义遥测出现数据重复的配置方法咨询
问题描述
我正尝试通过UseAzureMonitor扩展及自定义Tracing和Metrics将应用集成到Azure Monitor。
单独使用两者时均符合预期,但同时使用时,所有日志、计数器等数据均出现重复。
注释掉UseAzureMonitor会丢失日志和HTTP追踪;注释掉WithTracing和WithMetrics则会丢失所有自定义遥测数据。
请问是否可以同时使用两者?该如何进行配置?
当前配置代码:
builder.Services .AddOpenTelemetry() .UseAzureMonitor() .ConfigureResource(r => r.AddService("XYZ")) .WithTracing(b => b .AddSource("X") .AddAzureMonitorTraceExporter()) .WithMetrics(b => b .AddMeter("X") .AddAzureMonitorMetricExporter());
解决方案
可以同时使用,问题出在你重复添加了Azure Monitor导出器,导致遥测数据被发送两次。UseAzureMonitor()已经自动配置了Trace和Metric的Azure Monitor导出器,你又手动通过AddAzureMonitorTraceExporter()和AddAzureMonitorMetricExporter()再次添加,这就是数据重复的根源。
修改后的正确配置:
builder.Services .AddOpenTelemetry() .UseAzureMonitor() .ConfigureResource(r => r.AddService("XYZ")) .WithTracing(b => b .AddSource("X")) .WithMetrics(b => b .AddMeter("X"));
这样配置的效果:
UseAzureMonitor()负责日志、HTTP追踪的收集与导出,同时处理默认的Trace/Metric导出配置WithTracing和WithMetrics仅添加你自定义的Source和Meter,无需重复添加导出器,避免数据重复
如果需要对Trace或Metric的导出行为做精细化调整,可通过UseAzureMonitor()的重载参数进行配置,无需重复添加导出器。
内容的提问来源于stack exchange,提问作者user1075940
相关产品推荐
相关产品推荐

