需求:当我们创建deployment后,我们希望能够收集到这些deployment每个pod的终端日志,并且能够通过deployment的名字以及pod的名字进行过滤
日志方案
filebeat -> kafka -> logstash -> elasticsearch
Filebeat采集
容器中输出到终端(stdout)的日志,都会以*-json.log
的命名方式保存在/var/lib/docker/containers/
目录下,而且会在/var/log/containers/
目录下生成这些日志文件的软链接。所以,我们可以直接在/var/log/containers/
目录下采集容器的终端日志。
由于/var/log/containers/
目录下除了deployment的pod的日志文件外,还会有其他容器的日志,而我们只需要采集deployment的日志。在/var/log/containers/
目录下,deployment的pod的日志文件命名规则为(一个pod只有一个主容器和一个pause容器)
[podName]_[namespace]_[deploymentName]-