系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > server > anz > 详细页面

docker日志出现无法检索问题的解决

时间:2020-01-02来源:系统城作者:电脑系统城

日常检查服务的时候,从portainer那里进去看容器日志的时候,发现右上角出现红色的感叹号:Unable to retrieve container logs。

因为之前没出现过这样的问题,所以就先上服务器上用命令docker logs -f containerID看日志,发现日志也是动不了,还是停留在某个时间的日志记录上。

想了一下不应该是服务的日志打印出问题,先照着Google搜索了一遍,发现都没有跟我的问题相匹配的。因为日志有时能收集显示,有些日志不可以,应该是跟docker设置的日志引擎有问题。

本来是想整一套EFK的,但是感觉现在日志量还不够大,所以并没有修改docker的日志引擎,还是默认的journald


 
  1. [root@ad-official xiaoxiao]# docker info|grep Logging
  2. WARNING: You're not using the default seccomp profile
  3. 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,根据自己目前的日志输出量进行调整:

 

 
  1. [root@ad-official log]# cat /etc/systemd/journald.conf
  2. # This file is part of systemd.
  3. #
  4. # systemd is free software; you can redistribute it and/or modify it
  5. # under the terms of the GNU Lesser General Public License as published by
  6. # the Free Software Foundation; either version 2.1 of the License, or
  7. # (at your option) any later version.
  8. #
  9. # Entries in this file show the compile time defaults.
  10. # You can change settings by editing this file.
  11. # Defaults can be restored by simply deleting this file.
  12. #
  13. # See journald.conf(5) for details.
  14.  
  15. [Journal]
  16. #Storage=auto
  17. #Compress=yes
  18. #Seal=yes
  19. #SplitMode=uid
  20. #SyncIntervalSec=5m
  21. #RateLimitInterval=30s
  22. RateLimitBurst=5000
  23. #SystemMaxUse=
  24. #SystemKeepFree=
  25. #SystemMaxFileSize=
  26. #RuntimeMaxUse=
  27. #RuntimeKeepFree=
  28. #RuntimeMaxFileSize=
  29. #MaxRetentionSec=
  30. #MaxFileSec=1month
  31. ForwardToSyslog=no
  32. #ForwardToKMsg=no
  33. #ForwardToConsole=no
  34. ForwardToWall=no
  35. #TTYPath=/dev/console
  36. #MaxLevelStore=debug
  37. #MaxLevelSyslog=debug
  38. #MaxLevelKMsg=notice
  39. #MaxLevelConsole=info
  40. #MaxLevelWall=emerg
  41. #LineMax=48K

顺便将ForwardToSyslog和ForwardToWall设置成no,因为默认是yes,会导致我们清理了journal的日志文件,而Syslog中的没有清除掉,慢慢的就会将磁盘占满。

然后重启一下journald就可以恢复正常使用啦:systemctl restart systemd-journald.service

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

分享到:

相关信息

  • Nginx主机域名配置实现

    一、配置多个端口访问不同文件 二、配置不同域名访问不同文件 三、配置不同域名访问同个文件...

    2023-03-17

  • Nginx配置-日志格式配置方式

    上线了一个小的预约程序,配置通过Nginx进行访问入口,默认的日志是没有请求时间的,因此需要配置一下,将每一次的请求的访问响应时间记录出来,备查与优化使用....

    2023-03-17

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载