datadog/docker-dd-agent本镜像为Datadog Agent 5.x版本提供容器化部署方案,用于在Docker环境中快速部署Datadog Agent。Datadog Agent是一款轻量级监控代理,可收集主机、容器、应用的系统指标、日志、 traces 等数据,并发送至Datadog平台进行可视化和分析。适用于容器化环境下的基础设施监控、应用性能追踪及日志管理。
通过以下命令快速启动Agent容器,需替换{your_api_key_here}为实际Datadog API密钥:
bashdocker run -d --name dd-agent \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /proc/:/host/proc/:ro \ -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ -e API_KEY={your_api_key_here} \ -e SD_BACKEND=docker \ -e NON_LOCAL_TRAFFIC=false \ datadog/docker-dd-agent:latest
在Amazon Linux版本低于2的系统上,使用以下命令(cgroup路径不同):
bashdocker run -d --name dd-agent \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /proc/:/host/proc/:ro \ -v /cgroup/:/host/sys/fs/cgroup:ro \ -e API_KEY={your_api_key_here} \ -e SD_BACKEND=docker \ -e NON_LOCAL_TRAFFIC=false \ datadog/docker-dd-agent:latest
默认情况下,Agent容器使用主机docker info命令返回的Name字段作为主机名。如需自定义,可通过以下方式:
DD_HOSTNAME,例如-e DD_HOSTNAME=my-custom-host,Agent会自动将其写入/etc/dd-agent/datadog.conf。datadog.conf并修改hostname字段(不推荐,优先使用环境变量)。为确保Docker监控检查正常运行,主机需启用cgroup内存管理。例如在Debian Jessie及以上系统中,需在启动参数中添加cgroup_enable=memory swapaccount=1,步骤如下:
/etc/default/grub,修改GRUB_CMDLINE_LINUX添加参数。update-grub更新配置。快速启动命令中通过SD_BACKEND=docker启用自动发现,Agent会基于默认模板自动对容器执行监控检查。
SD_BACKEND环境变量。SD_CONFIG_BACKEND指定配置后端(如etcd、consul、zk),结合SD_BACKEND_HOST、SD_BACKEND_PORT等参数配置服务发现源。详细说明参见Datadog自动发现文档。
通过环境变量可配置Agent核心参数,常用变量如下:
| 环境变量 | 说明 | 示例值 |
|---|---|---|
API_KEY/DD_API_KEY | Datadog API密钥(必填) | abc*** |
DD_HOSTNAME | 自定义主机名 | web-server-01 |
TAGS/DD_TAGS | 主机标签,逗号分隔 | env:prod,team:backend |
EC2_TAGS | 是否采集EC2实例标签(需IAM角色) | yes |
LOG_LEVEL/DD_LOG_LEVEL | 日志级别(CRITICAL/ERROR/WARNING/INFO/DEBUG) | DEBUG |
DD_LOGS_STDOUT | 是否将Agent日志转发至stdout/stderr | yes |
PROXY_HOST/PROXY_PORT | 代理服务器地址和端口 | proxy.example.com/3128 |
NON_LOCAL_TRAFFIC | 是否允许外部IP发送StatsD指标(默认true,需注意安全风险) | false |
DD_APM_ENABLED | 是否启用APM追踪(非Alpine镜像支持) | true |
DD_COLLECT_LABELS_AS_TAGS | 采集容器标签作为指标标签(逗号分隔标签键) | com.docker.label.app,com.docker.label.env |
USE_DOGSTATSD | 是否禁用DogStatsD(默认启用) | no |
KUBERNETES=yes。KUBERNETES_COLLECT_EVENTS=true,或通过KUBERNETES_LEADER_CANDIDATE=true启用leader选举。KUBERNETES_NAMESPACE_NAME_REGEX指定需监控的命名空间(正则表达式)。MESOS_MASTER=yes。MESOS_SLAVE=yes。MARATHON_URL=[***]。如需监控JVM应用(如Java服务),需使用JMX镜像,标签格式为{版本}-jmx,例如:
bashdocker run -d --name dd-agent-jmx \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /proc/:/host/proc/:ro \ -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ -e API_KEY={your_api_key_here} \ datadog/docker-dd-agent:latest-jmx
仅需DogStatsD指标收集时,使用{版本}-dogstatsd标签镜像,无需挂载主机卷:
bashdocker run -d --name dogstatsd \ -e API_KEY={your_api_key_here} \ -p 8125:8125/udp \ datadog/docker-dd-agent:latest-dogstatsd
-e DD_APM_ENABLED=true开启8126端口追踪。-p 8125:8125/udp。-p 127.0.0.1:8125:8125/udp。容器内通过主机默认路由IP(如172.17.42.1)访问,可通过ip route命令获取主机IP。
启动客户端容器时添加--link dd-agent:dogstatsd,通过环境变量DOGSTATSD_PORT_8125_UDP_ADDR和DOGSTATSD_PORT_8125_UDP_PORT访问。
非Alpine镜像通过DD_APM_ENABLED=true启用APM,开放8126端口接收追踪数据:
bashdocker run -d --name dd-agent \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /proc/:/host/proc/:ro \ -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ -e API_KEY={your_api_key_here} \ -e DD_APM_ENABLED=true \ -p 8126:8126/tcp \ datadog/docker-dd-agent:latest
客户端容器添加--link dd-agent:dd-agent,通过环境变量DD_AGENT_PORT_8126_TCP_ADDR和DD_AGENT_PORT_8126_TCP_PORT配置追踪客户端。
Python示例:
pythonimport os from ddtrace import tracer tracer.configure( hostname=os.environ["DD_AGENT_PORT_8126_TCP_ADDR"], port=os.environ["DD_AGENT_PORT_8126_TCP_PORT"] )
如需预配置Agent(如添加监控检查模板),可基于官方镜像构建自定义镜像:
创建Dockerfile:
dockerfileFROM datadog/docker-dd-agent:latest # 添加MySQL监控配置 ADD conf.d/mysql.yaml /etc/dd-agent/conf.d/mysql.yaml
构建镜像:
bashdocker build -t my-custom-dd-agent .
启动自定义镜像:
bashdocker run -d --name dd-agent \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /proc/:/host/proc/:ro \ -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ -e API_KEY={your_api_key_here} \ my-custom-dd-agent
Alpine版本镜像体积更小(约为Debian版的40%),标签格式为{版本}-alpine,使用方式与默认镜像类似:
bashdocker run -d --name dd-agent \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /proc/:/host/proc/:ro \ -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ -e API_KEY={your_api_key_here} \ datadog/docker-dd-agent:latest-alpine
注意事项:
/opt/datadog-agent/agent/conf.d/(而非/etc/dd-agent/conf.d/)。docker exec dd-agent /opt/datadog-agent/bin/agent info。镜像版本遵循X.Y.Z格式,其中:
X:Docker镜像主版本号Y:Docker镜像次版本号Z:Datadog Agent版本号(三位数,如Agent 5.5.0对应550)示例:10.0.550表示Docker镜像主版本10、次版本0,包含Agent 5.5.0。
Debian镜像:
bashdocker exec dd-agent service datadog-agent info
Alpine镜像:
bashdocker exec dd-agent /opt/datadog-agent/bin/agent info
bashdocker cp dd-agent:/var/log/datadog /tmp/datadog-logs # Debian # 或 docker cp dd-agent:/opt/datadog-agent/logs /tmp/datadog-logs # Alpine
Debian镜像:
bashdocker exec -it dd-agent bash tail -f /var/log/datadog/collector.log # 主日志
Alpine镜像:
bashdocker exec -it dd-agent ash tail -f /opt/datadog-agent/logs/dogstatsd.log # DogStatsD日志
如发现镜像缺陷或功能问题,可通过GitHub Issues提交反馈。Agent核心功能问题请参考Datadog官方文档或Agent Wiki。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务