一:前言
1.Docker拥有多种日志机制来收集容器及其内部运行的服务的日志信息,这些机制统称为 logging drivers。 Docker daemon 拥有一个默认的 logging driver(json-file),容器默认采用这个logging driver.
2.Docker处理日志的方法是 Docker daemon捕捉每一个容器进程的STDOUT和STDERR, 通过logging driver将它们输出保存在磁盘上。 然后用户就能使用docker logs 来进行查询。
3.这些日志 跟随容器而产生的,如果删除了某个容器,相应的日志文件也会随着被删除。
4. 容器日志的输出形式
三: 容器日志收集的方式
1.容器外收集。将宿主机的目录挂载为容器的日志目录,然后在宿主机上收集。
1.Docker拥有多种日志机制来收集容器及其内部运行的服务的日志信息,这些机制统称为 logging drivers。 Docker daemon 拥有一个默认的 logging driver(json-file),容器默认采用这个logging driver.
2.Docker处理日志的方法是 Docker daemon捕捉每一个容器进程的STDOUT和STDERR, 通过logging driver将它们输出保存在磁盘上。 然后用户就能使用docker logs 来进行查询。
3.这些日志 跟随容器而产生的,如果删除了某个容器,相应的日志文件也会随着被删除。
4. 容器日志的输出形式
- stdout 标准输出
- stderr 标准错误
- 以json格式存放在容器对于到日志文件中
- docker自身运行时Daemon的日志内容
- docker容器的日志内容
三: 容器日志收集的方式
1.容器外收集。将宿主机的目录挂载为容器的日志目录,然后在宿主机上收集。
2.容器内收集。在容器内运行一个后台日志收集服务。
3.单独运行日志容器。单独运行一个容器提供共享日志卷,在日志容器中收集日志。
4.网络收集。容器内应用将日志直接发送到日志中心,比如java程序可以使用log4j 2转换日志格式并发送到远端。
5.通过修改docker的--log-driver。可以利用不同的driver把日志输出到不同地方,将log-driver设置为syslog、fluentd、splunk等日志收集服务,然后发送到远端。
四:容器日志收集的Sidecar模式 五:Kubernetes中的日志收集架构
通过在每台node上部署?个以DaemonSet?式运?的fluentd来收集每台node上的?志。Fluentd将docker?志?录 /var/lib/docker/containers 和 /var/log ?录挂载到Pod中,然后Pod会在node节点的 /var/log/pods ?录中创建新的?录,可以区别不同的容器?志输出,该?录下有?个?志?件链接到 /var/lib/docker/contianers ?录下的容器?志输出。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28624388/viewspace-2152682/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28624388/viewspace-2152682/