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

Django生产环境Gunicorn+WSGI配置OpenTelemetry对接Application Insights问题

在Gunicorn+WSGI架构下配置Azure Monitor全请求追踪

核心配置步骤

直接在WSGI入口文件(一般是wsgi.py)里调用configure_azure_monitor,而且必须在Django应用初始化前执行,具体操作如下:

  1. 修改wsgi.py文件
    在文件开头引入所需模块,先执行Azure Monitor配置,再初始化Django应用。示例代码:

    import os
    from azure.monitor.opentelemetry import configure_azure_monitor
    from django.core.wsgi import get_wsgi_application
    
    # 先配置Azure Monitor,务必在Django应用加载前执行
    configure_azure_monitor(
        connection_string="你的Application Insights连接字符串",
        # 可选:排除不需要追踪的路径,用逗号分隔,支持通配符
        # excluded_urls="/health,/static/*"
    )
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings')
    
    application = get_wsgi_application()
    
    # 确认settings.py里已经加了这个中间件
    # MIDDLEWARE = [
    #     ...
    #     'azure.monitor.opentelemetry.django.middleware.OpenTelemetryMiddleware',
    #     ...
    # ]
    
  2. 检查中间件配置
    确保settings.py的MIDDLEWARE列表中包含OpenTelemetryMiddleware,位置建议放在Django自带的CommonMiddleware之后、自定义中间件之前,这样才能完整捕获请求的整个生命周期。

  3. 启动Gunicorn
    直接用修改后的wsgi.py启动Gunicorn就行,比如:

    gunicorn 你的项目名.wsgi:application --bind 0.0.0.0:8000
    

关键注意点

  • 执行顺序不能乱:configure_azure_monitor必须在get_wsgi_application()之前调用,不然OpenTelemetry没法正确注入到Django的请求处理流程里。
  • 避免硬编码连接字符串:可以把连接字符串放到环境变量APPLICATIONINSIGHTS_CONNECTION_STRING里,这时调用configure_azure_monitor()不用传参,会自动读取环境变量。
  • 自定义追踪范围:如果不想追踪健康检查、静态资源这类请求,用excluded_urls参数配置就行,多个路径用逗号分隔,支持通配符。

验证效果

部署后发几个测试请求,登录Azure Portal的Application Insights,进入性能或请求仪表盘,就能看到和开发环境一样的请求追踪数据,包括响应时间、请求路径、错误信息等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:30:06