DaemonSet 方式采集容器文本日志时,您可以在采集路径中配置容器预留字段占位符,避免因配置采集路径通配符导致 LogCollector 采集的日志内容和容器元数据字段内容不匹配的问题。本文档介绍容器日志采集路径占位符的应用场景及配置方式。
DaemonSet 方式采集容器文本日志时,采集路径占位符主要用来解决日志内容和容器元数据字段内容不匹配的问题。例如应用程序是容器化部署的,并且其日志通过 HostPath 挂载持久化至节点中。当应用程序滚动升级的时候,新旧 Pod 的日志文件节点路径仅有 Pod 名称或者其他容器元信息的差别,其余部分完全一致。如果您在 LogCollector 采集配置的采集路径中通过通配符(*
)来动态匹配 Pod 名称或者其他容器元信息,则可能造成应用程序滚动升级之后,LogCollector 仍在采集旧 Pod 日志的问题。
例如应用程序日志文件的节点路径为 /data00/basic_log/mnt_logs/tls_api_autotest-tls/POD_api-autotest-tls-6df9c76bf4-pxxxx/tlsapi/access.log
,其中 POD_api-autotest-tls-6df9c76bf4-pxxxx
为 Pod 名称。如果采集路径中该部分用通配符(*
)表示,当应用程序滚动升级之后,通配符(*
)仍然匹配并采集旧 Pod 日志文件,但预留字段 __pod_name__
已自动切换为新 Pod 名称,会导致日志中预留字段与日志内容不匹配的问题。
在 Kubernetes 集群中通过 DaemonSet 方式安装 LogCollector,并创建机器组之后,您可以通过控制台或 API 的方式创建日志采集配置,填写包含容器预留字段占位符的采集路径。
配置方式 | 操作说明 |
---|---|
通过控制台配置 | 在控制台xx页面中创建采集配置,并在配置采集路径的步骤中填写包含容器预留字段占位符的采集路径。 |
通过 API 配置 | 通过 CreateRule 创建采集配置,并在请求参数 Paths 字段中填写包含容器预留字段占位符的采集路径。 |
DaemonSet 方式采集容器文本日志时,支持在采集路径中配置容器预留字段占位符,占位符格式为 {容器预留字段}
,用于动态匹配容器预留字段中 LogCollector 自动写入的容器元数据。支持的容器预留字段可参考容器预留字段。
例如容器预留字段中包括字段 __pod_name__
,则采集路径可配置为 /var/log/basic_log/POD_{__pod_name__}/tlsapi/access.log
,其中{__pod_name__}
为占位符,LogCollector 采集日志时会使用实际的 Pod 名称自动替换该占位符。