LoongCollector支持同时采集容器标准输出(Console)日志和容器内文本文件
1. 支持的采集类型
LoongCollector 支持以下两类容器日志采集方式:
容器标准输出(stdout/stderr)采集
自动读取容器运行时(Docker 或 Containerd)生成的标准输出流日志,无需访问容器内部文件系统。容器内文本文件日志采集
通过挂载宿主机根目录(默认挂载至 LoongCollector 容器内的/logtail_host),间接访问业务容器在宿主机上的日志文件路径,从而采集容器内指定路径的日志文件。
2. 部署模式与兼容性要求
运行环境要求
- Kubernetes 版本:
- 控制台方式:≥ v1.10.0
- CRD 方式:≥ v1.16.0
- 容器运行时:仅支持 Docker 和 Containerd
- Docker 需满足:
- 日志驱动为
json-file - 存储驱动为
overlay或overlay2 - 具备访问
docker.sock权限
- 日志驱动为
- Containerd 需具备访问
containerd.sock权限
- Docker 需满足:
部署模式
- 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
5inputs:
- 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