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 但为啥的主要内容,如果未能解决你的问题,请参考以下文章

docker log driver

docker:docker组件

linux日志系统介绍 —— syslog(),openlog(),closelog()

浅谈Linux下的syslog守护进程

使用 docker-compose 将 json 写入 syslog

Tina_Linux_syslog_使用指南