![轮转 haproxy 日志](https://linux22.com/image/634164/%E8%BD%AE%E8%BD%AC%20haproxy%20%E6%97%A5%E5%BF%97.png)
我尝试了一些方法,但仍然无法有效地轮换 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
}
答案1
Logrotate 不会持续监控您的日志文件。通常,logrotate 作为 中指定的每日 cron 作业的一部分运行,/etc/crontab
其中运行 中的脚本/etc/cron.daily
。因此,它按预期工作,当它运行时,如果文件大于 500M,它们就会被轮换。
如果要捕获接近 500M 的日志文件,则需要更频繁地运行 logrotate。您可以通过将/etc/cron.daily/logrotate
脚本复制到 来执行此操作/etc/cron.hourly/logrotate
。
这也意味着其他日志文件也可能会提前轮换。