[英]Docker daemon fails to process logs
Docker 守護程序無法解析 json 日志並引發unexpected EOF
錯誤。 我們正在調查問題的根本原因。
環境:
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.