在一个在线环境,实际的日志内容可以被发送到一个 elasticsearch 集群,并使用 kibana 或 graylog2 查看。二选一,这也有使用 JSON 工作的主机服务。
因为容器 ID 在随着工作变化的,我创建了一个简单的称为 docker-gen 的 golang 工程,它可以使用模板从运行中的 docker 容器数据中生成任意文件。在这个工程中的 fluentd 模板示例被用于生成以上的样本。
尽管没有展示,docker-gen 也能生成 logrotate 配置文件来轮转容器的 JSON 文件来避免在主机上��有磁盘空间运行。希望,docker 项目能在未来的发行版中添加这个。
总结这个方法提供了一下好处:
主机可以使用一个单独的收集 agent 转发任何容器的日志到一个中央日志服务器.
不需要要求应用程序使用 syslog 或是写日志到特定的卷。
主机可以访问容器日志以及任何在容器文件系统上的日志文件。
主机可以为容器轮转日志。
这个方法的一个缺点就是它直接访问 docker 文件系统而没有使用 API,这意味着它在未来可能出现问题,因为如果未来 docker 版本改变了它怎样在主机文件系统存储容器日志的话。
Docker安装应用(CentOS 6.5_x64)
Ubuntu 14.04安装Docker