使用 Fluentd 管理 Docker 日志
标签(空格分隔): Fluentd Docker 日志管理
本文作者是 jwilder,本文原文地址是 Docker Log Management Using Fluentd
当前 docker 版本的一个问题就是日志管理。每个容器运行一个单独的进程,并且进程的输出被 docker 保存在主机上的一个位置。
在当前有一些操作问题:
- 日志无限制的增长。Docker 以 JSON 消息记录每一行日志,这能引起文件增长过快以及超过主机上的磁盘空间,因为它不会自动轮转。
docker logs
命令返回在每次它运行的时候返回所有的日志记录。任何长时间运行的进程产生的日志都是冗长的,这会导致仔细检查非常困难。- 日志位于容器
/var/log
下或者是其他不容易可视化或访问的位置。
Docker 日志选项
虽然日志在 Docker 中正在演变,有几种方法可以处理当前的 Docker 的日志:
- 在容器内收集 - 除了正在运行的应用程序之外,每个容器设置一个日志收集进程。baseimage-docker 使用 runit 连同 syslog 作为一个示例。
- 在容器外收集 - 一个单独的收集 agent 运行在主机上,容器有一个从该主机挂载的卷,它们把日志记录在那里。
- 在单独的容器中收集 - 这是一个在主机上运行收集 agent 的细微变化。该收集 agent 也是运行在一个容器中并且该容器的卷是使用 docker run 的
volumes-from