我尝试了几件事,但仍然无法有效地旋转 haproxy 日志。当日志文件超过 500 MB 大小时,我需要轮换日志。考虑到 haproxy 的服务量很大。静态 tcp 连接,我无法重新启动 haproxy 进程,尽管重新加载是可行的。在我的机器上,每日 haproxy 日志文件大小通常超过 3 GB。这是来自一台较新机器的示例,其中日志文件大小超出了设置的限制:
ubuntu@server:/mnt/log/haproxy$ ls -lsh
total 4.3G
85M -rw-r----- 1 syslog adm 85M Jun 2 07:13 haproxy.log
2.9G -rw-r----- 1 syslog adm 2.9G Jun 2 06:37 haproxy.log.1
460M -rw-r----- 1 syslog adm 460M Jun 1 06:32 haproxy.log.2.gz
469M -rw-r----- 1 syslog adm 469M May 31 06:42 haproxy.log.3.gz
384M -rw-r----- 1 syslog adm 384M May 30 06:49 haproxy.log.4.gz
ubuntu@server:/mnt/log/haproxy$ cat /etc/logrotate.d/haproxy
/mnt/log/haproxy/haproxy.log {
missingok
copytruncate
notifempty
rotate 50
size 500M
compress
delaycompress
}
Logrotate 不会持续监控您的日志文件。通常 logrotate 作为每日 cron 作业的一部分运行,其中指定
/etc/crontab
在/etc/cron.daily
. 因此,它在运行时按预期工作,如果文件> 500M并且它们被旋转。如果要捕获接近 500M 的日志文件,则需要更频繁地运行 logrotate。您可以通过将
/etc/cron.daily/logrotate
脚本复制到/etc/cron.hourly/logrotate
.这也意味着其他日志文件也可能会提前轮换。