Docker 守护进程写入 syslog 但为啥
Posted
技术标签:
【中文标题】Docker 守护进程写入 syslog 但为啥【英文标题】:Docker daemon writing to syslog but whyDocker 守护进程写入 syslog 但为什么 【发布时间】:2019-08-21 21:50:58 【问题描述】:我正在运行 docker CE 设置,根据docker info
,活动记录器是json-file
。尽管如此,我的 syslog 却被有关 NetworDB 的日志充斥着
Aug 21 23:45:17 myhost dockerd[859]: time="2019-08-21T23:45:17.488796292+02:00" level=info msg="NetworkDB stats myhost(68894b27f787) - netID:tm84fou4w4x98tgpqv19femay leaving:false netPeers:1 entries:6 Queue qLen:0 netMsg/s:0"
这条消息是从哪里来的?如何配置/禁用它?
【问题讨论】:
【参考方案1】:您在docker info
中看到的活动记录器是指用于收集容器日志的日志驱动程序。您看到的是来自dockerd
本身的日志消息。
假设您的dockerd
是由systemd
启动的,日志会显示在syslog 中,因为dockerd
将它们写入stdout/stderr 并且systemd 会收集输出并将其写入系统日志。你有一些机制来处理这个问题:
通过设置--log-level
命令行选项来减少 Docker 的日志记录冗长:
dockerd --log-level=warn ...
(您可能需要修改docker.service
单元以添加此参数,最好是通过使用drop-in 配置文件)。
您可以通过在docker.service
单元中设置StandardOutput
参数(使用上述插件)将日志重定向到文件。
您可以使用具有过滤功能的 syslog 守护程序(如 syslog-ng 或 rsyslog)来抑制消息或将它们重定向到与主日志不同的文件。
就个人而言,我不会为上述任何事情烦恼:dockerd
的日志输出不太可能导致真正的问题,如果出现问题,最好有太多日志而不是不够.
【讨论】:
我真的收到了很多这样的消息,它使我的系统日志变得混乱。我知道通常你会在 syslog 中寻找特定的东西,因此可以使用 grep 但我有时喜欢看看是否有异常情况发生。并且这条消息占据了 90% 的日志。以上是关于Docker 守护进程写入 syslog 但为啥的主要内容,如果未能解决你的问题,请参考以下文章
linux日志系统介绍 —— syslog(),openlog(),closelog()