簡體   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