您好,登錄后才能下訂單哦!
這篇“docker日志出現無法檢索問題如何解決”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“docker日志出現無法檢索問題如何解決”文章吧。
日常檢查服務的時候,從portainer那里進去看容器日志的時候,發現右上角出現紅色的感嘆號:unable to retrieve container logs。
因為之前沒出現過這樣的問題,所以就先上服務器上用命令docker logs -f containerid看日志,發現日志也是動不了,還是停留在某個時間的日志記錄上。
想了一下不應該是服務的日志打印出問題,先照著google搜索了一遍,發現都沒有跟我的問題相匹配的。因為日志有時能收集顯示,有些日志不可以,應該是跟docker設置的日志引擎有問題。
本來是想整一套efk的,但是感覺現在日志量還不夠大,所以并沒有修改docker的日志引擎,還是默認的journald
[root@ad-official xiaoxiao]# docker info|grep logging warning: you're not using the default seccomp profile logging driver: journald
journald的官方文檔上有這么一個說明:
man journald.conf ... ratelimitinterval=, ratelimitburst= configures the rate limiting that is applied to all messages generated on the system. if, in the time interval defined by ratelimitinterval=, more messages than specified in ratelimitburst= are logged by a service, all further messages within the interval are dropped until the interval is over. a message about the number of dropped messages is generated. this rate limiting is applied per-service, so that two services which log do not interfere with each other's limits. defaults to 1000 messages in 30s. the time specification for ratelimitinterval= may be specified in the following units: "s", "min", "h", "ms", "us". to turn off any kind of rate limiting, set either value to 0. ...
這里寫了默認30秒內只能接收1000條日志,看到這里就能明白了,因為前陣子剛在docker發布了一個單日日志文件大小差不多達到3g的服務,導致到了其他服務的日志也受到了影響,大量的日志被journald丟棄,所以我們修改一下配置就沒有問題了。
打開/etc/systemd/journald.conf文件,將ratelimitburst從默認的1000修改成5000,根據自己目前的日志輸出量進行調整:
[root@ad-official log]# cat /etc/systemd/journald.conf # this file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the gnu lesser general public license as published by # the free software foundation; either version 2.1 of the license, or # (at your option) any later version. # # entries in this file show the compile time defaults. # you can change settings by editing this file. # defaults can be restored by simply deleting this file. # # see journald.conf(5) for details. [journal] #storage=auto #compress=yes #seal=yes #splitmode=uid #syncintervalsec=5m #ratelimitinterval=30s ratelimitburst=5000 #systemmaxuse= #systemkeepfree= #systemmaxfilesize= #runtimemaxuse= #runtimekeepfree= #runtimemaxfilesize= #maxretentionsec= #maxfilesec=1month forwardtosyslog=no #forwardtokmsg=no #forwardtoconsole=no forwardtowall=no #ttypath=/dev/console #maxlevelstore=debug #maxlevelsyslog=debug #maxlevelkmsg=notice #maxlevelconsole=info #maxlevelwall=emerg #linemax=48k
順便將forwardtosyslog和forwardtowall設置成no,因為默認是yes,會導致我們清理了journal的日志文件,而syslog中的沒有清除掉,慢慢的就會將磁盤占滿。
然后重啟一下journald就可以恢復正常使用啦:systemctl restart systemd-journald.service
以上就是關于“docker日志出現無法檢索問題如何解決”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。