nginx 日志每周轮换失败,我该如何确定原因?

nginx 日志每周轮换失败,我该如何确定原因?

在我安装 nginx 之后,它的日志会按照每周日 00:00 的 cron 任务每周轮换一次

然而本周日志旋转失败,我不知道原因。

我认为唯一可能影响它的事情是我进行了 apt-get 升级。升级过程很顺利,只有一个配置文件需要手动合并。

我找不到任何有关 logrotate 本身的日志。我似乎希望在 /var/syslog 中看到有关 logrotate cron 作业的内容,但那里什么也没有(从来没有)。

其次,logrotate 似乎已针对 nginx 进行了正确配置。在 logrotate.d 中有一个看起来不错的 nginx 配置文件

logrotate cron 作业仍然在 /etc/cron.daily 中

感谢您的帮助 - 寻找这之前可以工作但突然停止的原因,或者在哪里寻找来自 cron 或 logrotate 本身的任何额外日志输出。

答案1

logrotate使用该选项手动调用-v可能会更清楚地了解正在发生的事情,但请注意,这可能是一个破坏性操作,具体取决于轮换的日志。

除此之外,如果日志中没有任何内容,则很难说:检查磁盘空间/可用 inodedf可能会有帮助,检查 dmesg 可能会指示磁盘是否出现故障。

答案2

您可以通过在调试模式下运行来测试特定文件是否存在错误;

/usr/sbin/logrotate -d /etc/logrotate.d/nginx

您也可以强制 logrotate 通过特定文件运行

/usr/sbin/logrotate -f /etc/logrotate.d/nginx

在大多数情况下 - lograte 可能由于指定目录中的写入错误而失败(可能是旋转的文件已经存在?或者相关文件夹丢失?)

如果以上工作正常,您可能需要使用通用 logrotate conf 文件运行调试模式(这将触发调试模式并帮助找出除 nginx logrotate 之外的问题)

/usr/sbin/logrotate -d /etc/logrotate.conf

如果以上操作成功运行——您需要确认 crontabs 是否对相关 Linux 用户(root?)正常工作。您可以设置一个简单的基于 echo 的 cron 来检查。

相关内容