LoongCollector支持同时采集容器标准输出(Console)日志和容器内文本文件

1. 支持的采集类型

LoongCollector 支持以下两类容器日志采集方式:

  • 容器标准输出(stdout/stderr)采集
    自动读取容器运行时(Docker 或 Containerd)生成的标准输出流日志,无需访问容器内部文件系统。

  • 容器内文本文件日志采集
    通过挂载宿主机根目录(默认挂载至 LoongCollector 容器内的 /logtail_host),间接访问业务容器在宿主机上的日志文件路径,从而采集容器内指定路径的日志文件。


2. 部署模式与兼容性要求

运行环境要求

  • Kubernetes 版本
    • 控制台方式:≥ v1.10.0
    • CRD 方式:≥ v1.16.0
  • 容器运行时:仅支持 DockerContainerd
    • Docker 需满足:
      • 日志驱动为 json-file
      • 存储驱动为 overlayoverlay2
      • 具备访问 docker.sock 权限
    • Containerd 需具备访问 containerd.sock 权限

部署模式

  • DaemonSet 模式(推荐):在每个节点部署一个LoongCollector实例,统一采集该节点上所有容器的日志(包括标准输出和文件日志)。
  • Sidecar 模式:适用于对特定 Pod 做精细化日志采集,但需单独配置。

3. 配置方式

用户可通过以下任一方式创建采集规则,指定采集源类型:

(1)通过控制台配置

在“全局与输入配置”中选择:

  • 标准输出:开启 stdout/stderr 采集开关
  • 文件日志:填写容器内日志文件路径(如 /app/log/*.log),LoongCollector 会自动映射到宿主机路径进行采集

(2)通过 Kubernetes CRD(AliyunPipelineConfig)配置

  • 使用 input_type: service_docker_stdout 采集标准输出
  • 使用 input_type: input_file 并设置 FilePaths 字段采集容器内文件日志
    • 示例字段:
      1
      2
      3
      4
      5
      inputs:
      - Type: input_file
      FilePaths:
      - /logtail_host/var/lib/docker/containers/*/*-json.log # 标准输出底层文件(Docker)
      - /logtail_host/path/to/app.log # 业务日志文件

注意:虽然标准输出在底层也以文件形式存储(如 Docker 的 -json.log 文件),但 LoongCollector 提供了专门的 标准输出采集通道,可自动关联容器元信息(如 Pod 名、Namespace 等),建议优先使用标准输出专用采集方式而非手动指定其底层文件路径


4. 限制与注意事项

  • 不要同时开启 stdout 和 stderr,可能导致日志内容混乱。
  • 单条标准输出日志最大支持 8 MB,默认为 512 KB;超长日志需通过环境变量 max_read_buffer_size 调整。
  • 对于多行日志(如 Java 异常堆栈),需配置 行首正则表达式,并注意默认缓存时间为 3 秒(可通过 BeginLineTimeoutMs 调整,但不得低于 1000ms)。
  • LoongCollector 与 Logtail 不能共存,二者为互斥组件。

相关链接

采集Docker容器日志(标准输出/文件) 适用范围 https://help.aliyun.com/zh/sls/collect-docker-container-text-logs