Logrotate 行为异常

Logrotate 行为异常

在下面找到我正在使用的 logrotate 配置

/usr/local/nagios/var/nagios.log {
    copytruncate
    daily
    rotate 7
    compress
    missingok
    size 100M
}

我可以注意到状态文件/var/lib/logrotate.status每天都会根据当前日期进行更新,但日志文件不会轮换,并且会以 GB 为单位增长,直到磁盘被填满。

会有什么问题呢?

答案1

问题可能是 Nagios 从未被终止/重新启动,因此它开始记录到新的日志文件。以下是几个示例,展示了您将如何执行该postrotate操作。

/var/log/nagios/nagios.log {
daily
rotate 180
compress
dateext
missingok
notifempty
sharedscripts
postrotate
        /sbin/service nagios reload > /dev/null 2>/dev/null || true
endscript
}

或者更直接的东西:

/var/log/nagios/nagios.log {
    missingok
    postrotate
        /bin/kill -HUP `cat /var/run/nagios.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

让 Nagios 来做

然而,在较新版本的 Nagios 中,它实际上会轮换自己的日志文件。包含的 logrotate 配置文件甚至说明了这一点。

在 Fedora 19 上安装 Nagios 版本 3.5.1-1:

$ more /etc/logrotate.d/nagios
# Important!  Nagios rotates its own logs.  Only enable this logrotate if you
# know what you are doing!

# For more information please see "log_rotate_method" in: 
# /etc/nagios/nagios.cfg

# ----- logrotate config -------------
#/var/log/nagios/*.log {
#       missingok
#       weekly
#       notifempty
#       nocompress
#       create 644 nagios nagios
#}

相关内容