[GTALUG] logrotate problem
Michael Galea
michael at galeahome.ca
Thu Oct 17 19:46:33 EDT 2019
On 2019-10-17 1:59 p.m., Giles Orr via talk wrote:
>
> We have a bunch of new(ish) Debian 10 VMs, and logrotate is failing to
> rotate our non-standard logs. Unfortunately we deleted all the old
> Debian 9 VMs before I noticed this problem, so they're not readily
> available for comparison. The logrotate config files worked fine on
> Debian 9 (provisioning is with Ansible, so it's consistent). The
> failures aren't detailed enough to help. Here's the config:
>
> # /etc/logrotate.d/ruby
> /opt/rubyapp/log/*.log {
> daily
> missingok
> rotate 28
> compress
> delaycompress
> copytruncate
> }
>
> The parent configuration is standard Debian 10:
>
> # /etc/logrotate.conf
> # (system-supplied comments removed)
> weekly
> rotate 4
> create
> include /etc/logrotate.d
>
> Unfortunately my paranoia is such that I'm redacting or modifying
> machine names and folder names ... I apologize for that. But I don't
> think the path involved is the problem.
>
> Here's one of the errors:
>
> # systemctl status logrotate.service
> ● logrotate.service - Rotate log files
> Loaded: loaded (/lib/systemd/system/logrotate.service; static;
> vendor preset: enabled)
> Active: failed (Result: exit-code) since Thu 2019-10-17 00:00:17
> EDT; 12h ago
> Docs: man:logrotate(8)
> man:logrotate.conf(5)
> Process: 29004 ExecStart=/usr/sbin/logrotate /etc/logrotate.conf
> (code=exited, status=1/FAILURE)
> Main PID: 29004 (code=exited, status=1/FAILURE)
>
> Oct 17 00:00:01 acctserver systemd[1]: Starting Rotate log files...
> Oct 17 00:00:14 acctserver logrotate[8621]: error: unable to open
> /opt/rubyapp/log/newrelic_agent.log.1 for compression
> Oct 17 00:00:14 acctserver logrotate[8621]: error: unable to open
> /opt/rubyapp/log/puma.stderr.log.1 for compression
> Oct 17 00:00:14 acctserver logrotate[8621]: error: unable to open
> /opt/rubyapp/log/puma.stdout.log.1 for compression
> Oct 17 00:00:14 acctserver logrotate[8621]: error: unable to open
> /opt/rubyapp/log/traffic.log.1 for compression
> Oct 17 00:00:17 acctserver systemd[1]: logrotate.service: Main
> process exited, code=exited, status=1/FAILURE
> Oct 17 00:00:17 acctserver systemd[1]: logrotate.service: Failed
> with result 'exit-code'.
> Oct 17 00:00:17 acctserver systemd[1]: Failed to start Rotate log
> files.
>
> Here's the folder contents:
>
> # cd /opt/rubyapp/log
> # ls -l
> -rw-rw-r--+ 1 root root 1982 Oct 16 15:08 newrelic_agent.log
> -rw-rw-r--+ 1 root root 7194 Oct 16 13:37 newrelic_agent.log.1
> -rw-rw-r--+ 1 root root 2549 Oct 10 17:45
> newrelic_agent.log.2.gz
> -rw-rw-r--+ 1 root root 154290 Oct 17 12:34 puma.stderr.log
> -rw-rw-r--+ 1 root root 573253 Oct 16 13:37 puma.stderr.log.1
> -rw-rw-r--+ 1 root root 512648 Oct 10 17:45 puma.stderr.log.2.gz
> -rw-rw-r--+ 1 root root 238 Oct 16 15:08 puma.stdout.log
> -rw-rw-r--+ 1 root root 722 Oct 16 13:37 puma.stdout.log.1
> -rw-rw-r--+ 1 root root 701 Oct 10 17:45 puma.stdout.log.2.gz
> -rw-rw-r--+ 1 root root 4747006453 Oct 17 12:37 traffic.log
> -rw-rw-r--+ 1 root root 15668065757 Oct 10 17:55 traffic.log.1
> -rw-rw-r--+ 1 root root 850646513 Sep 20 18:12 traffic.log.2.gz
>
> I note that in /var/log/ - where logrotate continues to work fine - that
> files are owned mostly root:adm (what is 'adm', and does it matter in
> this context?) and the permissions are 640 rather than 664. There are
> ACLs attached to the files/folder shown above ... does _that_ matter?
> Where this gets weirder is that if I run 'logrotate --force
> /etc/logrotate.d/ruby' it gets rotated fine. It runs fine if run by
> hand, it fails if run on a SystemD timer. Which suggests a difference
> in permissions, but don't timers run as root:root?
>
> Any thoughts appreciated. As you can see, these are damn big logs, and
> we have this problem across multiple machines so I'd really like to fix
> it ...
>
> Errors on other servers aren't always consistent with this: a fix for
> this may or may not help with them, so I may be coming back for more.
>
> Thanks all.
>
> --
> Giles
> https://www.gilesorr.com/
> gilesorr at gmail.com <mailto:gilesorr at gmail.com>
>
> ---
> Post to this mailing list talk at gtalug.org
> Unsubscribe from this mailing list https://gtalug.org/mailman/listinfo/talk
>
I note that the versions of logrotate in stable (and also in unstable)
have Bug
"#831764 [logrotate] logrotate: does not rotate logs if delaycompress is
used" logged against them. I'm not sure your problem sounds like the one
posted in the bug report though.
I think I remember from a previous life that logrotate will fail if the
logging entity (rubyapp?) holds the file open. In that case you can try
and use the post-rotate directive to "killall -hup .. " the entity,
which should kick it off the file.
Does /var/lib/logrotate/status have anything to say about the log? It
should indicate when the last rotate occurred.
--
Michael Galea
More information about the talk
mailing list