OpenShift 4.11.9中Filebeat /tmp日志占满引发Pod驱逐问题求助
Filebeat日志监控环境存储问题解决方案
问题背景
在OpenShift 4.11.9(适配Kubernetes 1.24)环境中使用Filebeat进行日志监控时,Pod的/tmp目录生成大量占用存储空间的日志文件,其中monitoring-*.log系列文件占比突出,已导致Pod面临驱逐风险。需解决以下三个问题:
- 缩小日志文件体积
- 将日志存储目录从
/tmp修改至其他路径 - 缩短日志轮转间隔
此前尝试排查日志存储至/tmp的原因及修改方式,但未取得进展。以下是/tmp目录的文件列表:
total 680892 -rw-r--r--. 1 1000680000 1000680000 45518518 Mar 7 01:35 monitoring-stdout---supervisor-jti9vqc6.log -rw-r-----. 1 1000680000 1000680000 5803121 Mar 7 01:35 pch4543779432628550477.history.gz -rw-r-----. 1 1000680000 1000680000 54381482 Mar 7 01:35 pch4543779432628550477.history -rw-r-----. 1 1000680000 1000680000 2185531 Mar 7 01:35 pch6805951925590054337.history drwxrwsrwx. 4 root 1000680000 4096 Mar 7 01:28 . -rw-r--r--. 1 1000680000 1000680000 52428996 Mar 7 01:28 monitoring-stdout---supervisor-jti9vqc6.log.1 -rw-r-----. 1 1000680000 1000680000 72101 Mar 7 01:26 pch6805951925590054337.history.gz -rw-r--r--. 1 1000680000 1000680000 52428802 Mar 7 01:20 monitoring-stdout---supervisor-jti9vqc6.log.2 -rw-r--r--. 1 1000680000 1000680000 52428984 Mar 7 01:12 monitoring-stdout---supervisor-jti9vqc6.log.3 -rw-r--r--. 1 1000680000 1000680000 52428907 Mar 7 01:04 monitoring-stdout---supervisor-jti9vqc6.log.4 -rw-r--r--. 1 1000680000 1000680000 52429189 Mar 7 00:55 monitoring-stdout---supervisor-jti9vqc6.log.5 -rw-r--r--. 1 1000680000 1000680000 52428807 Mar 7 00:47 monitoring-stdout---supervisor-jti9vqc6.log.6 -rw-r--r--. 1 1000680000 1000680000 52428867 Mar 7 00:39 monitoring-stdout---supervisor-jti9vqc6.log.7 -rw-r--r--. 1 1000680000 1000680000 52429055 Mar 7 00:31 monitoring-stdout---supervisor-jti9vqc6.log.8 -rw-r--r--. 1 1000680000 1000680000 52428920 Mar 7 00:23 monitoring-stdout---supervisor-jti9vqc6.log.9 -rw-r--r--. 1 1000680000 1000680000 52428974 Mar 7 00:15 monitoring-stdout---supervisor-jti9vqc6.log.10 -rw-r-----. 1 1000680000 1000680000 173586 Mar 6 23:41 pch783860385935287176.history.gz -rw-r-----. 1 1000680000 1000680000 11674655 Mar 6 23:41 pch7390231010312236403.history.gz drwxr-s---. 2 1000680000 1000680000 4096 Mar 6 19:41 axis2-tmp-597419792942874660.tmp -rw-r-----. 1 1000680000 1000680000 0 Mar 6 19:41 axis2-tmp-597419792942874660.tmp.lck drwxrwxrwt. 4 1000680000 root 64 Mar 6 19:40 .com_ibm_tools_attach -rw-------. 1 1000680000 1000680000 0 Mar 6 19:39 filebeat-syslog-stderr---supervisor-j80_3v5j.log -rw-------. 1 1000680000 1000680000 0 Mar 6 19:39 filebeat-syslog-stdout---supervisor-hq39mt_v.log -rw-------. 1 1000680000 1000680000 0 Mar 6 19:39 filebeat-was-stderr---supervisor-en73_cgc.log -rw-------. 1 1000680000 1000680000 0 Mar 6 19:39 filebeat-was-stdout---supervisor-v0comu9p.log -rw-------. 1 1000680000 1000680000 0 Mar 6 19:39 filebeat-cpe-stderr---supervisor-v8837rxx.log -rw-------. 1 1000680000 1000680000 0 Mar 6 19:39 filebeat-cpe-stdout---supervisor-_0l469zf.log -rw-r--r--. 1 1000680000 1000680000 3 Mar 6 19:39 supervisord.pid srwx------. 1 1000680000 1000680000 0 Mar 6 19:39 supervisor.sock dr-xr-xr-x. 1 root root 28 Mar 6 19:39 ..
解决方案
1. 缩小日志文件体积
从文件列表看,monitoring-*.log是supervisor捕获的进程标准输出日志,可通过以下方式缩小体积:
- 启用日志压缩:修改supervisord配置文件(通常是
supervisord.conf或对应进程的配置段),添加compress=true参数,让轮转后的日志自动压缩,减少存储空间占用。 - 降低日志级别:如果monitoring进程本身日志输出过多,调整其日志级别为
WARN或ERROR,减少不必要的日志内容输出。 - 限制单日志文件大小:在supervisord的日志配置中设置
maxbytes参数,比如maxbytes=10MB,避免单个日志文件过大。
2. 修改日志存储目录
日志默认存在/tmp是因为supervisord默认将日志写入临时目录,修改方式如下:
- 找到supervisord中对应
monitoring进程的配置段(通常在[program:monitoring]下),修改stdout_logfile和stderr_logfile参数,指定新的存储路径,比如:[program:monitoring] stdout_logfile=/var/log/monitoring/monitoring-stdout.log stderr_logfile=/var/log/monitoring/monitoring-stderr.log - 确保新目录在Pod中已存在且有足够权限:可以在Pod的启动脚本中提前创建
/var/log/monitoring目录,并设置正确的权限(比如mkdir -p /var/log/monitoring && chown 1000680000:1000680000 /var/log/monitoring)。 - 更新OpenShift的Deployment或DaemonSet配置,将新目录挂载到持久化存储或更大的临时存储卷,避免再次出现空间不足。
3. 缩短日志轮转间隔
调整supervisord的日志轮转参数来缩短间隔:
- 在supervisord的进程配置段添加
logrotate_interval参数,设置轮转时间间隔,比如logrotate_interval=30(单位为分钟),或者按小时/天设置(hourly/daily)。 - 同时设置
rotate参数限制保留的日志文件数量,比如rotate=5,避免过多历史日志堆积。示例配置:[program:monitoring] stdout_logfile=/var/log/monitoring/monitoring-stdout.log stdout_logfile_maxbytes=10MB stdout_logfile_backups=5 stdout_logrotate_interval=30 stdout_logrotate_compress=true - 修改配置后重启supervisord或对应的monitoring进程,让配置生效:
supervisorctl restart monitoring。
内容的提问来源于stack exchange,提问作者Varun Sriram
相关产品推荐
相关产品推荐

