在服务的日常巡检中,我从portainer进入容器日志时,发现右上角有红色感叹号:无法检索容器日志。因为之前从来没有出现过这样的问题,所以先去服务器上用命令dockerlogs-fcontainerID查看日志,发现日志无法移动,而且还是停留在日志记录上一定时间。想了想,应该不是服务打印日志的问题。我先google了一下,发现没有一个符合我的问题。因为有时候日志可以收集显示,有的日志不能,应该是docker设置的日志引擎有问题。本来想完成一套EFK的,但是感觉日志量不够大,所以没有修改docker的日志引擎,还是默认的journald[root@ad-officialxiaoxiao]#dockerinfo|grepLoggingWARNING:You'renotusingthedefaultseccompprofileLoggingDriver:Therearesuchanexplanationintheofficialjournaldjournalddocumentation:manjournald.conf...RateLimitInterval=,RateLimitBurst=配置应用于所有的速率限制系统上生成的消息。如果在RateLimitInterval=定义的时间间隔内,服务记录的消息多于RateLimitBurst=中指定的消息,则该间隔内的所有其他消息都将被丢弃,直到该间隔结束。生成有关丢弃消息数的消息。此速率限制适用于每个服务,因此记录的两个服务不会干扰彼此的限制。默认为30秒内1000条消息。RateLimitInterval=的时间规范可以用以下单位指定:“s”、“min”、“h”、“ms”、“us”。要关闭任何类型的速率限制,请将任一值设置为0。...这上面写着默认30秒内只能收到1000条日志。看到这里就明白了,因为前阵子在docker上发布了一个日日志文件大小差不多3G的服务,导致其他服务的日志受到影响。大量的日志被journald丢弃,所以我们修改配置就没有问题了打开/etc/systemd/journald.conf文件,将RateLimitBurst从默认的1000修改成5000,根据自己目标前的日志输出量进行调整:[root@ad-officiallog]#cat/etc/systemd/#journald.conf该文件是systemd的一部分。##systemd是免费软件;您可以根据#自由软件基金会发布的GNU宽松通用公共许可证的条款重新分发和/或修改它#;许可证的版本2.1,或#(由您选择)任何更高版本。##此文件中的条目显示编译时默认值。#您可以通过编辑此文件来更改设置。#默认值可以通过简单地删除此文件来恢复.##详见journald.conf(5)。[Journal]#Storage=auto#Compress=yes#Seal=yes#SplitMode=uid#SyncIntervalSec=5m#RateLimitInterval=30sRateLimitBurst=5000#SystemMaxUse=#SystemKeepFree=#SystemMaxFileSize=#RuntimeMaxUse=#RuntimeKeepFree=#RuntimeMaxFileSize=#MaxRetentionSec=#MaxFileSec=1monthForwardToSyslog=no#ForwardToKMsg=no#ForwardToConsole=noForwardToWall=no#TTYPath=/dev/console#MaxLevelStore=debug#MaxLevelSyslog=debug#MaxLevelKMsg=notice#MaxLevelConsole=info#MaxLevelWall=emerg#LineMax=48K顺便把ForwardToSyslog和ForwardToWall设置为no,因为默认是yes,这样会导致我们清理journallogfiles,andSyslog如果不清除,会慢慢填满磁盘,重启journald恢复正常使用:systemctlrestartsystemd-journald.service
