FastAPI集成OpenTelemetry到Azure Application Insight遇追踪重复问题求助
解决FastAPI + OpenTelemetry + Azure Application Insights 根追踪重复问题
问题原因
重复的根追踪(如POST /api/ingest/v2/upload http receive)通常由双重追踪注入导致:
configure_azure_monitor默认会自动启用FastAPI的HTTP请求追踪- Azure WebApp可能通过内置的Application Insights站点扩展/自动检测功能,同时注入了另一层HTTP追踪
- 或者代码中重复注册了追踪中间件
解决方案
1. 关闭Azure WebApp的自动Application Insights追踪
进入Azure Portal中你的WebApp资源:
- 导航到「监控」→「Application Insights」
- 检查是否开启了自动检测或安装了Application Insights站点扩展,如果是,选择关闭(保留手动Otel配置的话)
- 同时检查应用设置中是否存在
APPINSIGHTS_INSTRUMENTATIONKEY或APPLICATIONINSIGHTS_CONNECTION_STRING,确保只有手动配置的连接串存在
2. 调整Otel配置,控制HTTP追踪逻辑
修改你的setup_otel函数,显式禁用configure_azure_monitor的自动HTTP追踪,改为手动初始化FastAPI Instrumentor,避免重复注入:
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor def setup_otel(app: FastAPI): if settings.APPLICATIONINSIGHTS_CONNECTION_STRING: configure_azure_monitor( connection_string=settings.APPLICATIONINSIGHTS_CONNECTION_STRING, logger_name=settings.LOGGER_NAME, disable_http_instrumentation=True # 禁用自动HTTP追踪 ) # 手动初始化FastAPI追踪,确保仅执行一次 FastAPIInstrumentor.instrument_app(app)
3. 排查重复注册问题
确认代码中没有重复调用setup_otel函数,也没有同时使用其他Application Insights相关的中间件(比如原生azure.monitor.opentelemetry之外的SDK中间件)
4. 验证结果
部署修改后的代码,查看Application Insights的「事务」面板,确认重复的根追踪条目已消失
内容的提问来源于stack exchange,提问作者Jakub Zilinek
相关产品推荐
相关产品推荐

