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

如何为Apache mod_wsgi部署的Flask Docker应用启用Datadog追踪

解决Apache+mod_wsgi下Flask应用的Datadog追踪配置问题

因为mod_wsgi是将Python应用嵌入Apache进程中运行,直接用ddtrace-run启动Apache脚本不会生效——ddtrace-run只能注入当前进程,而Apache会fork出独立的WSGI子进程,这些子进程不会继承ddtrace的注入环境。下面是两种可行的配置方案:

方案1:在Flask代码中手动初始化Datadog追踪

这是最稳定的方式,直接在应用层面注入追踪逻辑:

  • 确保Docker镜像中已安装ddtrace包:

    pip install ddtrace
    
  • 在你的Flask应用入口文件(比如app.py)顶部添加初始化代码:

    from ddtrace import patch_all
    from ddtrace.contrib.flask import TraceMiddleware
    
    # 自动patch所有支持的库(Flask、requests等)
    patch_all()
    
    # 初始化Flask应用
    from flask import Flask
    app = Flask(__name__)
    
    # 配置TraceMiddleware,替换为你的服务名称
    tracer = TraceMiddleware(app, tracer=None, service="your-flask-service-name")
    
  • 在Docker环境变量中配置Datadog必要参数:

    • DD_AGENT_HOST:Datadog Agent的地址(如果在同一Docker网络,通常是datadog-agent)
    • DD_SERVICE:你的服务名称
    • DD_ENV:环境标识(如prod、staging)
    • DD_VERSION:服务版本号

方案2:通过mod_wsgi配置注入ddtrace

如果不想修改代码,可以通过Apache的mod_wsgi配置让WSGI进程加载ddtrace:

  • 安装ddtrace包(同上)。

  • 修改Apache的WSGI配置文件(比如your-app.conf),添加以下配置:

    # 设置Datadog追踪的环境变量
    SetEnv DD_TRACE_ENABLED true
    SetEnv DD_SERVICE your-flask-service-name
    SetEnv DD_AGENT_HOST datadog-agent
    
    # 配置WSGI进程参数,替换为你的应用路径
    WSGIDaemonProcess flask-app processes=2 threads=15 python-path=/path/to/your/app
    WSGIProcessGroup flask-app
    WSGIScriptAlias / /path/to/your/app/wsgi.py process-group=flask-app application-group=%{GLOBAL}
    
  • 修改你的wsgi.py文件(若不存在则创建),添加初始化代码:

    from ddtrace import patch_all
    patch_all()
    
    from app import app as application
    
  • 保持Docker入口点正常启动Apache(/run-apache.sh),不需要用ddtrace-run包裹。

关键注意事项

  • 确保Datadog Agent已在Docker环境中运行,且与应用容器在同一网络,能相互通信。
  • 避免同时使用ddtrace-run和代码初始化,可能导致冲突。
  • 若使用方案1,无需额外修改Apache配置,代码层面的初始化会直接生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:37:46