docker如何配置syslog作为log输出。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker如何配置syslog作为log输出。相关的知识,希望对你有一定的参考价值。
参考技术A docker如何配置syslog作为log输出。有两个途径,一是全局配置即daemon.json,影响所有的container
其中log-opts需要查看docker的文档,根据需要配置。
这个例子中的两个参数,后面会介绍他们的含义。
另一个途径就是per-container的配置。
就是在docker run的时候指定参数。
经过这个配置之后,docker会把container的log导出到syslog。
必须先确保syslog在运行
查看是状态是否在运行;注意rsyslog依赖于journald,查看journald是否在运行
这里systemd-journald依赖于一个machine id
重启journald和rsyslog
经过这个步骤之后,container的log就导出到/var/log/messages里面了。
syslog还可以把log输出到远程的syslog,比如在docker swarm环境下,可以配置一个syslog server,把所有的不同机器上的container全部导出到这台机器上,实现log的集中式管理。
配置rsyslog server
可以配置成TCP或者UDP,上述配成UDP
上述配置了server端的监听地址,下面配置server端收到log信息之后如何处理。
几点说明:
配置rsyslog client
这里把客户端的log全部转发到server地址<your-rsyslog-server>:514,两个@@表示远端是TCP连接,一个@表示UDP连接。
并且定义了buffer的文件名(fwdyourname)和空间大小(1g),以备远程server不能服务的时候,缓存本地日志。
配置container的logrotate信息。
如何检查 ubuntu docker 的 syslog
【中文标题】如何检查 ubuntu docker 的 syslog【英文标题】:how to check syslog for ubuntu docker 【发布时间】:2016-06-20 17:16:53 【问题描述】:我在本地 vm 的 docker 中安装了 tutum/ubuntu
。
当我登录ubuntu
并运行以下命令时。
logger "Test Logging"
我找不到这个登录的文件。在我的本地系统中,我可以在/var/log
中看到system.log
或syslog
或messages
文件。但是当我在容器中检查/var/log
时,我找不到任何这样的文件。
root@fbc4ae457ad9:~# ls -al /var/log/
total 316
drwxrwxr-x 6 root syslog 4096 Jun 20 16:49 .
drwxr-xr-x 16 root root 4096 Jun 20 16:42 ..
-rw-r--r-- 1 root root 9174 Mar 17 15:17 alternatives.log
drwxr-xr-x 2 root root 4096 Mar 17 15:17 apt
-rw-r--r-- 1 root root 47816 Mar 15 04:34 bootstrap.log
-rw-rw---- 1 root utmp 768 Jun 20 16:49 btmp
-rw-r----- 1 root adm 31 Mar 15 04:34 dmesg
-rw-r--r-- 1 root root 213169 Mar 17 15:17 dpkg.log
-rw-r--r-- 1 root root 3296 Mar 17 15:17 faillog
drwxr-xr-x 2 root root 4096 Mar 15 04:34 fsck
-rw-rw-r-- 1 root utmp 30076 Jun 20 16:53 lastlog
drwxr-xr-x 2 root root 4096 Apr 11 2014 upstart
-rw-rw-r-- 1 root utmp 1920 Jun 20 16:53 wtmp
我检查了upstart
和其他目录,但都是空的。
systemlog
我必须检查哪个文件?
【问题讨论】:
【参考方案1】:默认情况下没有安装 rsyslogd,在你使用的这个镜像中也没有。
如果您希望在您的 docker 容器中使用 rsyslogd,您应该先通过 Dockerfile 自行安装/配置它。
RUN apt-get -y install rsyslog
您可能还需要 supervisord 才能在容器中启动所有进程。
【讨论】:
@Nilesh 在 docker hub 有一堆,试试看:hub.docker.com/search/…以上是关于docker如何配置syslog作为log输出。的主要内容,如果未能解决你的问题,请参考以下文章
docker 容器 syslog日志配置 对日志进行拆分目录和文件
在 OS X 上使用 log-driver="syslog" 时出现 docker 错误
是否可以在 Docker 中运行 syslog 并将其作为主机的 syslog 守护进程公开给主机?