繁体   English   中英

Docker 守护进程无法处理日志

[英]Docker daemon fails to process logs

Docker 守护程序无法解析 json 日志并引发unexpected EOF错误。 我们正在调查问题的根本原因。

环境:

  • Debian 4.9.189-3+deb9u2
  • Docker 发动机 19.03.5

Docker 守护进程日志:

Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070677515+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=345
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070695689+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=346
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070712630+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=347
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070732299+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=348
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070755016+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=349
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070773699+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=350

Docker 守护进程配置

"log-driver": "json-file",
"log-opts": {
  "mode": "non-blocking",
  "max-size": "500m",
  "max-file": "3"
}

docker 写入其日志的分区上有可用的存储空间。

非常欢迎您对此事的见解。

问题=Docker 引擎错误 json 文件:修复偶发的意外 EOF 错误

我花了一些时间研究并尝试在 docker 日志中查找错误。

docker 引擎 20.10.5 中存在一个错误,该版本是在 docker 中运行的版本。 Github PR 解决了这个问题。 https://github.com/moby/moby/pull/42104

我在运行时发现错误

$ journalctl -u docker.service
level=warning msg="got error while decoding json" error="unexpected EOF" retries=19999

Docker 日志驱动程序有一个错误,它不会处理一些日志格式。 然后,该错误会用重试消息淹没系统日志。 这种情况会产生非常烦人的 CPU 负载。

Docker 引擎最新版本为 20.10.7。 该问题已在版本 Docker 引擎 20.10.6 https://docs.docker.com/engine/release-notes/#201 中修复

上述问题将导致 docker(版本 <= 19)进程的 CPU 使用率出现异常峰值,并一直保持在该级别,直到您修复日志。

要修复日志和 CPU 使用率,您必须截断所有容器日志(因为我们无法确定哪个容器有错误日志)。 仅当您的日志采用 json 格式时,它才有效:

truncate -s 0 /var/lib/docker/containers/*/*-json.log

请参阅安德烈的答案以获得永久修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM