passenger icon indicating copy to clipboard operation
passenger copied to clipboard

Nginx logrotation causes Passenger to log to /var/log/nginx/error.log.1

Open Shelagh-Lewins opened this issue 4 years ago • 5 comments

When Nginx rotates the log files, Passenger logs to the old file /var/log/nginx/error.log.1, instead of /var/log/nginx/error.log

As per the docs one-off fix is to run:

passenger-config reopen-logs

however I assume the issue will recur each time Nginx rotates the logs.

Is there some way to automate this process so that Passenger will always write to the new log after rotation?

Passenger standalone version: 6.0.4 Instance: zB0Y2IrX (nginx/1.14.0 Phusion_Passenger/6.0.4) OS: Ubuntu 18.04 Nginx: nginx/1.14.0 App: Meteor 1.8.1

Shelagh-Lewins avatar Mar 10 '20 13:03 Shelagh-Lewins

If you are using logrotate to rotate nginx logs you can edit the config to include passenger:

postrotate
		# nginx stuff here ...
		passenger-config reopen-logs >/dev/null 2>&1 || true
endscript

CamJN avatar Apr 30 '20 20:04 CamJN

Thanks. I just checked the config and that code is already present in /etc/logrotate.d/nginx:

/var/log/nginx/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi \
        endscript
        postrotate
                invoke-rc.d nginx rotate >/dev/null 2>&1
                passenger-config reopen-logs >/dev/null 2>&1 || true
        endscript
}

Passenger must have added it automatically, which is the kind of sensible behaviour I'd expect from Passenger :) But it seems that it didn't work, because of the issue I saw after logrotate happened?

Just to check it's set up correctly, I ran:

sudo logrotate /etc/logrotate.conf --debug

and this reported that the nginx script ran but that it did not need to rotate any logs, so didn't run the postrotate.

shelagh-lewins-ucl avatar May 01 '20 07:05 shelagh-lewins-ucl

nginx log rotation on CentOS 7.7 and 7.8 makes passenger stop logging when logrotate is triggered everyday.

I just added passenger-config reopen-logs >/dev/null 2>&1 || true to postrotate. I'm testing now if everything is going to work as expected.

dave105010 avatar May 27 '20 21:05 dave105010

Observing the same problem with version 6.0.6-1~bionic1

% sudo passenger-config reopen-logs
Reopening logs for Phusion Passenger watchdog
Reopening logs for Phusion Passenger core (through reinheritance)
All done
% sudo lsof -n | grep log.1 |grep ^Passenger
Passenger 21864                  root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21864 20113            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21864 21871            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21864 21881            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21864 21886            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21864 21887            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872                  root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872  1579            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872  1606            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872  4149            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872  4176            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 18679            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 18707            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 20115            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21875            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21876            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21877            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21878            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21880            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21882            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21884            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21885            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21891            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21892            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21895            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21896            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 21897            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 22449            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 22450            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 22451            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 22452            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 22566            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 22593            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 28679            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 28706            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 30261            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1
Passenger 21872 30288            root    1w      REG              252,1 30615678996     920695 /var/log/nginx/error.log.1

shallot avatar Oct 24 '20 13:10 shallot

Same problem in debian buster. libnginx-mod-http-passenger 1:6.0.14-1~buster1

After rotating nginx logs but not rotating Passenger

root@swapp-1:~# lsof +D /var/log/nginx/ | grep ^Passenger
Passenger 14773     root    1w   REG 254,58   139447 6877 /var/log/nginx/error.log-20220701
Passenger 14773     root    2w   REG 254,58   139447 6877 /var/log/nginx/error.log-20220701
Passenger 14776     root    1w   REG 254,58   139447 6877 /var/log/nginx/error.log-20220701
Passenger 14776     root    2w   REG 254,58   139447 6877 /var/log/nginx/error.log-20220701
root@swapp-1:~#

File descriptor #1 still points to error.log-20220701

root@swapp-1:~# passenger-config reopen-logs
Reopening logs for Phusion Passenger(R) watchdog
Reopening logs for Phusion Passenger(R) core (through reinheritance)
All done
root@swapp-1:~# lsof +D /var/log/nginx/ | grep ^Passenger
Passenger 14773     root    1w   REG 254,58   139447 6877 /var/log/nginx/error.log-20220701
Passenger 14773     root    2w   REG 254,58      196 6694 /var/log/nginx/error.log
Passenger 14773     root   27w   REG 254,58      196 6694 /var/log/nginx/error.log
Passenger 14776     root    1w   REG 254,58   139447 6877 /var/log/nginx/error.log-20220701
Passenger 14776     root    2w   REG 254,58      196 6694 /var/log/nginx/error.log
Passenger 14776     root  331w   REG 254,58      196 6694 /var/log/nginx/error.log
root@swapp-1:~#

One more rotating open two more file descriptor but don't close fd #1.

root@swapp-1:~# passenger-config reopen-logs
Reopening logs for Phusion Passenger(R) watchdog
Reopening logs for Phusion Passenger(R) core (through reinheritance)
All done
root@swapp-1:~# lsof +D /var/log/nginx/ | grep ^Passenger
Passenger 14773     root    1w   REG 254,58   139447 6877 /var/log/nginx/error.log-20220701
Passenger 14773     root    2w   REG 254,58      392 6694 /var/log/nginx/error.log
Passenger 14773     root   27w   REG 254,58      392 6694 /var/log/nginx/error.log
Passenger 14773     root   28w   REG 254,58      392 6694 /var/log/nginx/error.log
Passenger 14776     root    1w   REG 254,58   139447 6877 /var/log/nginx/error.log-20220701
Passenger 14776     root    2w   REG 254,58      392 6694 /var/log/nginx/error.log
Passenger 14776     root  324w   REG 254,58      392 6694 /var/log/nginx/error.log
Passenger 14776     root  331w   REG 254,58      392 6694 /var/log/nginx/error.log
root@swapp-1:~#

schavkin avatar Jul 01 '22 09:07 schavkin