Docker CE和syslog

问题描述

Docker日志记录驱动程序是在线指定的,并且存在这些限制。

日志记录驱动程序的限制

Docker Enterprise的用户可以使用“双重日志记录”,这使您可以将docker logs命令用于任何日志记录驱动程序。有关使用docker日志在本地读取许多第三方日志记录解决方案的容器日志的信息,请参阅使用远程日志记录驱动程序时阅读日志。

syslog

gelf

流利的

awslogs

splunk

etwlogs

gcplogs

登录

使用Docker Community Engine时,docker logs命令仅在以下驱动程序上可用:

本地

json文件

journald

读取日志信息需要解压缩旋转的日志文件,这会导致磁盘使用情况暂时增加(直到从旋转文件中读取日志条目为止),并且在解压缩时会增加cpu使用率。

Docker数据目录所在的主机存储的容量决定了日志文件信息的最大大小。

我正在使用Docker CE,但是我对此文档有疑问。这是否意味着使用CE,我根本无法执行syslog?还是只是我无法执行syslog并拥有docker日志?

解决方法

没有什么可以阻止您在容器内使用syslog的,但是您无法使用'docker logs'命令读取这些日志。也没有什么可以阻止您将日志写入stdout并将其通过管道传递到所需的任意数量的日志发件人。

以下文章介绍了如何在docker容器中执行syslog:https://medium.com/better-programming/docker-centralized-logging-with-syslog-97b9c147bd30

考虑到syslog-ng看起来很有趣,考虑到它们提供给msg字段的结构,我认为fluentd和fluent-bit是比syslog更好的选择。流利的位虽然非常好,所以您可能要看看它。