Logging kubernetes上的Fluentd日志记录跳过日志旋转上的日志
目前,我在kubernetes拥有以下建筑:Logging kubernetes上的Fluentd日志记录跳过日志旋转上的日志,logging,kubernetes,fluentd,log-rotation,Logging,Kubernetes,Fluentd,Log Rotation,目前,我在kubernetes拥有以下建筑: 在pod中,服务和侧车容器(称为记录器)正在运行 服务写入文件,sidecar容器读取该文件并将其写入标准输出 fluentd守护程序配置为读取输出(收集在/var/log/containers/*\u logger-*.log中的文件中),该文件是指向另一个文件的链接(自上次文件旋转以来的最新文件,指向旧文件,没有链接点) 始终有3条日志消息属于一起(一些相同的字段) 此配置对数千条消息按预期工作 然而,问题是: 我注意到fluentd有时只转
- 在pod中,服务和侧车容器(称为
记录器
)正在运行李>
- 服务写入文件,sidecar容器读取该文件并将其写入标准输出
- fluentd守护程序配置为读取输出(收集在
中的文件中),该文件是指向另一个文件的链接(自上次文件旋转以来的最新文件,指向旧文件,没有链接点)/var/log/containers/*\u logger-*.log
- 始终有3条日志消息属于一起(一些相同的字段)
- 这是一个已知的问题吗
- 为什么fluentd和kubernetes会这样
- 主要问题是:为了接收所有日志消息,我可以做些什么来防止这种行为?
fluent/fluentd kubernetes守护程序:v0.12.33-elasticsearch
如果需要更多信息,请告诉我。TLDR:
理论上,这应该适用于最新版本的fluentd kubernetes守护程序
。如果它不是rotate\u wait
的默认值,则可能需要为In_tail\u容器日志
配置覆盖它,因为时间问题
为此,您需要创建一个自定义docker映像,该映像将覆盖kubernetes.conf
文件,或者使用自定义配置的配置映射,将其装载到容器中,并将FLUENT_conf
设置为装载目录中的主配置文件
说明:
docker进程正在读取容器的stdout和stderr。
在将流刷新到日志文件的同时,它还将跟踪设置的限制。当达到限制时,它将开始日志旋转
同时fluentd正在监视符号链接。当符号链接更改时,fluentd的文件监视程序将被触发,以更新其指向实际日志文件的内部指针,并重置pos文件中的位置,因为新创建的日志文件为空
使用配置参数rotate\u wait
我们告诉fluentd等待设置的秒数(默认为5),以便将已刷新到文件(或即将刷新)的最后日志行可以在继续新创建的日志文件之前提取。这也将确保日志行按正确的顺序处理