如何清理风暴中死亡的工作日志?

How to cleanup died jobs logs in storm?

我正在尝试清理存储在 storm_log_path/workers-artifacts/

中的 died storm 作业日志

我正在使用 storm 1.2.3 和我的 storm.yaml

logviewer.childopts: "-Xmx128m"
logviewer.cleanup.age.mins: 30
logviewer.max.sum.worker.logs.size.mb: 4096
logviewer.max.per.worker.logs.size.mb: 2048

我将清理时间设置为 30 分钟进行测试,但没有奏效。 日志目录有每个 运行 作业的文件夹,名称是 jobID-countingNumber-timestamp

5faaac990788a706cb972861-1-1607352884
5faaac990788a706cb972861-1-1607358710
5faaac990788a706cb972861-1-1607528615
5faaac990788a706cb972861-1-1607587744
5faaac990788a706cb972861-2-1607353512
5faaac990788a706cb972861-2-1607507502
5faaac990788a706cb972861-3-1607354786

如何允许 logviewer 选项工作或有其他方法吗?

TL;DR

在您的 storm.yaml 中,您需要添加 logviewer.cleanup.interval.secs: <value> 才能使 logviewer 清理器服务正常工作。之后重新启动日志查看器服务。


你的问题让我很好奇,所以我做了一些挖掘,首先是通过风暴文档,然后是我们集群的日志,然后是风暴源代码。

事实证明,logviewer 清理服务没有配置默认值,而是使用 null 初始化的。文档中没有提到这一点,但是,在检查我们自己的日志查看器日志时,我看到了这一行:

2020-12-10 13:34:42.129 o.a.s.d.l.u.LogCleaner main [WARN] The interval for log cleanup is not set. Skip starting log cleanup thread.

查看default config file and the storm sources made it clear there is no default value configured and the process is initialized with null (this file, line 97),实际上根本没有启动清理服务。在我看来,他们忘记在他们的文档中提及这一点,因此希望配置该服务的管理员会自动设置它。

设置值并重新启动日志查看器后,它立即开始清理文件,正如我在日志中看到的那样。所以感谢你提出这个问题,否则它会引起我的注意!