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

如何清理EC2/Ubuntu服务器上Apache Storm的workers-artifacts和storm-logs

Apache Storm workers-artifacts 日志自动清理方案

1. 日志轮转删除范围说明

你配置的log4j2规则仅会删除当前运行的对应topology的日志,不会删除整个artifact仓库:

  • 你在A1 appender的Delete规则中配置的basePath是${sys:workers.artifacts}/${sys:storm.id},其中storm.id是每个topology启动时生成的唯一标识,规则仅作用于该topology对应的目录
  • 已停止运行的topology对应的目录不会被log4j2规则处理,因为对应的worker进程已经退出,不会触发日志轮转动作

2. 当前worker.xml未生效的原因排查

你的配置存在三个常见的未生效原因:

  • 删除规则逻辑限制:只有同时满足「文件最后修改时间超过3天」+「该目录下总文件大小超过5G/总文件数超过15个」两个条件时,才会触发删除,阈值过高可能导致长期没有文件被清理
  • 规则覆盖不全:Delete规则仅配置在A1 appender下,STDOUT、STDERR、METRICS三个输出的日志仅配置了最多保留4/9个滚动文件,没有按时间清理的规则
  • 触发时机限制:Delete规则仅在日志触发轮转(每小时整点/文件大小达到100MB)时才会执行,如果日志产生速度慢,长期没有触发轮转就不会执行清理

3. cron+bash脚本清理方案可行性

该方案是目前最稳妥的兜底清理方案,不受topology运行状态、log4j2配置限制,可实现全量旧数据清理,参考实现如下:

#!/bin/bash
# 日志根目录,替换为你实际的存储路径
LOG_DIR="/path/to/storm-logs/workers-artifacts"
# 通用保留天数
RETENTION_DAY=7

# 第一步:清理超过保留天数的所有日志文件
find ${LOG_DIR} -type f -mtime +${RETENTION_DAY} -delete

# 可选步骤:清理已经停止的topology的整个目录
RUNNING_TOPO_IDS=$(storm list | grep -v "Topology name" | awk '{print $2}')
for dir in ${LOG_DIR}/*/; do
    topo_id=$(basename ${dir})
    if ! echo "${RUNNING_TOPO_IDS}" | grep -q "${topo_id}"; then
        rm -rf ${dir}
    fi
done

将上述脚本保存为/opt/scripts/storm-log-clean.sh,添加可执行权限后配置cron定时执行:

# 编辑crontab,添加以下规则,每天凌晨2点执行清理
0 2 * * * /bin/bash /opt/scripts/storm-log-clean.sh >> /var/log/storm-log-clean.log 2>&1

4. topology层级的日志清理实现

可通过两种方式实现topology粒度的自定义清理:

  • 自定义日志配置提交:每个topology提交时,携带单独定制的worker.xml配置,通过storm jar命令的--conf "log4j.configurationFile=./custom-worker.xml"参数指定,可针对不同topology设置不同的保留时长、大小阈值
  • 脚本按topology匹配清理:在上述bash脚本中,通过storm list获取运行中topology的名称和id的对应关系,针对不同名称的topology设置不同的保留天数,单独执行清理规则

推荐组合方案

建议将两种方案配合使用:

  • log4j2配置负责运行中topology的实时日志轮转,控制单topology的日志占用上限
  • cron脚本作为兜底,定期清理已停止topology的目录、以及log4j2规则漏处理的旧日志

内容的提问来源于stack exchange,提问作者Aditya Raman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:27:01