You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Azure OpenTelemetry入站请求未记录,FastAPI Requests表无数据

FastAPI请求未上报至App Insights Requests表的排查方案

以下是针对你遇到的问题(异常和依赖可正常记录,但Requests表无数据)的具体排查步骤:

1. 确认监控初始化时机

必须在创建FastAPI实例之前调用configure_azure_monitor。如果你的代码是先创建app = FastAPI()再初始化监控,OpenTelemetry无法自动注入请求追踪中间件,导致请求不会被记录。

正确顺序示例:

from azure.monitor.opentelemetry import configure_azure_monitor
from fastapi import FastAPI

# 先初始化监控
configure_azure_monitor(connection_string="YOUR_CONNECTION_STRING")

# 再创建FastAPI实例
app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

2. 检查中间件是否成功注入

可以通过打印app.middleware_stack查看是否包含Azure Monitor相关的追踪中间件。如果输出中没有OpenTelemetry/FastAPI相关的中间件,说明初始化时机错误或配置未生效。

3. 验证依赖包版本兼容性

版本不匹配可能导致自动追踪失效,建议确保以下包的版本兼容:

  • azure-monitor-opentelemetry:使用最新稳定版或示例中指定的版本
  • fastapi:确保与opentelemetry-instrumentation-fastapi兼容
  • opentelemetry-instrumentation-fastapi:由azure-monitor-opentelemetry间接依赖,无需手动安装,但需确保版本适配

可通过以下命令查看已安装版本:

pip list | grep -E "azure-monitor-opentelemetry|fastapi|opentelemetry"

4. 排查配置参数与环境变量

  • 确认APPLICATIONINSIGHTS_CONNECTION_STRING环境变量或传入configure_azure_monitor的参数正确(虽然异常和依赖能上报,但仍需确认未被意外覆盖)
  • 检查是否在configure_azure_monitor中设置了enable_tracing=False,或通过其他配置禁用了请求追踪
  • 确认没有配置请求过滤规则,导致所有请求被排除在追踪外

5. 测试最简接口,排除路由特殊逻辑

创建一个无任何额外依赖或异常处理的最简接口:

@app.get("/test-trace")
async def test_trace():
    return {"status": "ok"}

调用该接口后等待5-10分钟,查看Requests表是否有数据。如果有,说明问题出在其他路由的特殊处理(如自定义异常捕获、依赖注入导致上下文丢失);如果仍无数据,继续排查全局配置。

6. 开启调试日志排查上报问题

添加日志配置,查看追踪流程中的错误信息:

import logging
logging.basicConfig(level=logging.DEBUG)

运行服务并调用接口,查看日志中是否有:

  • 请求被追踪的日志(如"Starting span for request")
  • 上报失败的错误信息(如网络问题、权限错误)

7. 确认App Insights数据延迟

App Insights的数据上报可能存在延迟(尤其是免费层),建议调用接口后等待5-15分钟再查看Requests表,避免误判。

内容的提问来源于stack exchange,提问作者Kevin Cohen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:37:21