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

运行Docker容器时如何覆盖DataDog日志采集的source字段

问题根因

你之前的两种配置方式不生效,核心是踩了DataDog容器日志采集的常见认知误区:
DataDog Agent的Docker自动发现逻辑不会读取业务容器内部的DD_SOURCE、DD_TAGS环境变量来覆盖日志source字段,默认取镜像名最后一段作为source的逻辑,只能通过Docker标准标签(label)传递元数据来覆盖。

  • DD_SOURCE这类环境变量仅适用于直接在主机/进程层面部署日志采集客户端的场景,不适用于Docker容器自动采集场景
  • source是DataDog日志的内置保留字段,普通自定义标签无权覆盖该字段值
正确配置步骤

只需要修改你那个基于Nginx构建的自定义业务服务的docker-compose配置,给该服务添加DataDog识别用的Docker标签即可,Agent原有配置不需要改动:

  • 找到docker-compose.yml中使用my-account/hello-world镜像的服务配置段
  • 在该服务下添加labels配置段,指定日志source为nginx
    配置示例如下:
services:
  # 你的自定义Nginx业务服务
  custom-nginx-app:
    image: my-account/hello-world
    # 新增以下labels配置,其余原有配置(端口、挂载、环境变量等)全部保持不变
    labels:
      com.datadoghq.ad.logs: '[{"source": "nginx", "service": "填写你自己的服务名即可"}]'
    ports:
      - "80:80"

  # 原有DataDog Agent配置不需要改动,仅需确认已开启日志采集相关参数
  datadog-agent:
    image: datadog/agent:latest
    environment:
      - DD_API_KEY=你的DD_API_KEY
      - DD_LOGS_ENABLED=true
      - DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /proc/:/host/proc/:ro
      - /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
  • 配置修改完成后,执行docker-compose up -d重启业务服务和DataDog Agent即可生效。
验证方式

重启完成后等待1~2分钟,去DataDog日志平台查询该容器输出的日志,即可看到source字段已经被识别为nginx,会自动匹配内置的Nginx日志解析管道完成结构化处理,不需要额外自定义解析规则。

注意:如果你的Agent配置了日志采集的容器白/黑名单规则,请确认该自定义服务的容器没有被排除在采集范围外,否则标签配置不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:42:24