如何轮换任意命名并放置在深层嵌套目录中的日志?

如何轮换任意命名并放置在深层嵌套目录中的日志?

我有几个主机,基本上是开发人员的游乐场。在这些主机上,每个主机在 /tmp 下都有一个目录,开发人员可以自由地在其中做任何想做的事情 - 存储文件、写入日志等。

当然,日志需要轮换,否则磁盘在一周内就会满 100%。文件可能很多,但我已经用诸如 等路径处理过它,/tmp/[a-e]*/*并且愉快地度过了一段时间,但随着他们在机器上尝试新的酷东西,logrotate规则变得丑陋和难以管理,并且越来越难以理解哪些文件击中了 glob。此外,如果要求轮换套接字,logrotate 会出现段错误。

我不想在那种环境下尝试执行某些命名策略,我认为这会花费相当多的时间并且会让人们感到恼火并且在某些时候仍然会失败。

而且我仍然需要管理日志,而不仅仅是在晚上管理目录。

那么在这种情况下编写一个脚本来处理这些临时文件是一个好主意吗?我更喜欢尽可能坚持使用标准实用程序,但在这里我认为 logrotate 变得越来越难以管理。

也许有人听说过一些在这种环境下可以很好地工作的 logrotate 替代品?我不需要通过电子邮件发送日志或其他一些高级功能,因此理论上一些注释良好的 find | xargs 就可以了。

PS:我确实有一个日志聚合器,但这些东西不会影响我的小巧可爱的 logstash 机器。

答案1

在像这样的开发环境中,我喜欢设置一个特定的目录,人们需要将他们的日志目录符号链接到该目录中,通常使用强制命名约定,如“username_branch”或“username-ProductInTesting”,然后我会对所有符号链接的目录进行日志轮转。

有几次,人们忘记添加符号链接,导致磁盘被写满,其他 devops 人员对他们非常生气。所以我摆脱了困境。

答案2

既然这些都是开发人员的机器,你有没有要求他们自己管理这些东西?给他们工具,教他们流程,然后一切就交给他们了。

或者,如果您无法欺骗他们,您可以要求他们在添加新的日志目录时提醒您,这样您就不必寻找新的日志目录了吗?

你会注意到,这两种方法都归结为“团队之间沟通并强制问责”。你在生产中如何处理这个问题?我希望以同样的方式,对吧?

相关内容