You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:47:05