使用Apache进行logrotate与Rotatelogs的优缺点是什么?


11

Apache提供了一个名为rotatelogs的工具,该工具的好处是在轮换使用logrotate的日志时不会重新启动apache。如果这是足够的条件来使用Rottlogs而不是Logrotate,那么我没有足够的经验。

我的问题是,有没有人使用这两种工具中的一种或两种具有现实生活经验,您输入的内容是什么?

您会推荐什么,为什么?

Answers:


7

我建议大多数人使用logrotate,因为那会旋转所有其他日志(KISS:保持简单愚蠢)。Logrotate不会重新启动所有Apache,而只是向它发送一个信号,告诉它重新打开其所有日志文件并重新启动子级。该信号可以是SIGHUP,它会导致子节点立即重新启动(这将中断下载),或者是SIGUSR1,它会进行平稳重启。使用SIGUSR1,您必须延迟日志处理,直到您认为所有孩子都会自然死亡为止。无论哪种方式,您都可能希望分析日志,并将其计时为一天或一周中流量最低的时段。

管道日志似乎是更强大的解决方案。一个很大的优点是它将允许您使用集中式日志记录系统并负担Web服务器本身的负载。该手册本身说:

与条件日志记录一样,管道日志记录是一个非常强大的工具,但是在可以使用脱机后处理等更简单的解决方案的地方,不应使用它们。

因此很明显,如果你不不使用管道日志需要它。过去,我曾使用管道日志记录作为过滤日志的一种骇人听闻的方式,并且没有问题。


带有Apache的logrotate文件的postrotate脚本将发送SIGHUP,这将导致Apache终止所有子级并重新启动。当时所有活动的连接都将终止。
Warner

我在某处读到一条评论,说正常重启不适用于负载较重的服务器。但是我真的不认为有很多替代方法。
Mohan Gulati 2010年

使用SIGHUP进行logrotate是非常标准的。我不会担心。
华纳2010年

2

我以前都用过。我发现使用Rotatelogs是管理访问日志以及不希望Apache停机的非常有用的工具。在高容量站点上,我建议这样做,我发现的唯一问题是,如果要管理日志,则需要重新启动一个单独的脚本以清理日志或将日志移至备份服务器,这显然是取决于要求。使用logrotate时,您确实有更多关于日志文件处理方式的选择,唯一的问题是如上一个答案中所述运行logrotate时,您将需要重新启动apache。

基本上,这一切都取决于选择,如果您需要不间断地运行,那么可以使用外部cron脚本来管理日志,否则使用logrotate就足够了。只需确保设置logrotate cron即可在流量较高时不旋转日志。

最后,如果您希望将apache日志记录到syslog中,则可以始终使用基于Redhat的linuxes上的logger命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.