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

如何在AWS Elastic Beanstalk中为Flask应用添加Datadog追踪入口命令?

在AWS Elastic Beanstalk(Apache + mod_wsgi)中为Flask应用添加Datadog追踪

因为Elastic Beanstalk用Apache+mod_wsgi部署Flask时,不是直接执行你本地的ddtrace-run python3 application.py命令,而是由Apache的mod_wsgi模块直接加载你的Flask应用,所以得换个思路来配置Datadog追踪。下面是两种可靠的实现方式:

方法一:手动在Flask应用中初始化追踪(最简单)

这种方式不需要修改Apache配置,只需要在你的Flask代码中添加Datadog的初始化逻辑,同时确保Datadog Agent和ddtrace包安装到位。

步骤1:添加ddtrace到依赖

在项目根目录的requirements.txt中加入:

ddtrace>=1.0.0

这样Elastic Beanstalk部署时会自动安装这个包。

步骤2:在Flask应用中添加追踪逻辑

修改你的application.py,在开头加入以下代码(假设你的Flask实例名为app):

import ddtrace
from ddtrace.contrib.flask import TraceMiddleware

# 配置Datadog追踪
tracer = ddtrace.tracer
tracer.configure(
    service="your-flask-service-name",  # 替换为你的服务名称
    env="production",  # 根据你的环境调整(比如staging、development)
    agent_hostname="localhost"  # Datadog Agent默认运行在本地,无需修改
)

# 初始化Flask app
from flask import Flask
app = Flask(__name__)

# 绑定追踪中间件
TraceMiddleware(app, tracer, service="your-flask-service-name")

# 你的原有Flask代码...

步骤3:安装并配置Datadog Agent

创建.ebextensions/01_install_datadog_agent.config文件,用来在Elastic Beanstalk实例上安装Datadog Agent:

packages:
  yum:
    datadog-agent: []

files:
  "/etc/datadog-agent/datadog.yaml":
    mode: "000644"
    owner: dd-agent
    group: dd-agent
    content: |
      api_key: ${DD_API_KEY}
      site: datadoghq.com

commands:
  01_restart_datadog_agent:
    command: "sudo systemctl restart datadog-agent"

然后在Elastic Beanstalk的环境配置 > 软件 > 环境变量中添加DD_API_KEY,值为你的Datadog API密钥。

方法二:修改Apache/mod_wsgi配置(更贴近本地的ddtrace-run方式)

如果你更希望模拟本地用ddtrace-run启动的方式,可以通过修改mod_wsgi的配置,让它用ddtrace-run来加载你的Flask应用。

步骤1:添加ddtrace到依赖

同样在requirements.txt中加入ddtrace>=1.0.0。

步骤2:修改mod_wsgi配置

创建.ebextensions/00_mod_wsgi_datadog.config文件,覆盖默认的mod_wsgi配置:

files:
  "/etc/httpd/conf.d/wsgi_custom.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      # 覆盖默认的mod_wsgi配置,使用ddtrace-run启动Python
      WSGIDaemonProcess wsgi processes=1 threads=15 display-name=%{GROUP} \
        python-path=/opt/python/current/app:/opt/python/run/venv/lib/python3.9/site-packages \
        python-interpreter=/opt/python/run/venv/bin/ddtrace-run
      WSGIProcessGroup wsgi
      WSGIScriptAlias / /opt/python/current/app/application.py
      WSGIPassAuthorization On

注意把python3.9替换为你实际使用的Python版本(可以在Elastic Beanstalk环境配置中查看Python版本)。

步骤3:安装Datadog Agent

和方法一的步骤3一致,创建.ebextensions/01_install_datadog_agent.config并设置DD_API_KEY环境变量。

验证是否生效

部署完成后,可以通过以下方式验证:

  • 查看Datadog控制台的APM页面,检查是否有来自你的Flask服务的追踪数据
  • 登录Elastic Beanstalk实例,查看Datadog Agent日志:sudo tail -f /var/log/datadog/agent.log,确认没有错误
  • 查看Apache日志:sudo tail -f /var/log/httpd/error_log,确认mod_wsgi启动正常,没有加载错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:42:33