csvlog Behavior when log file missing

Started by Lesley Kimmelalmost 7 years ago2 messagesgeneral
Jump to latest
#1Lesley Kimmel
lesley.j.kimmel@gmail.com

Hi all;

I have a system where postgres seems to be randomly dying. When researching
the issue I, of course, began looking at logs.

I found that much of the logs were missing due to logrotate configuration
on the server. Logs were being rotated by size and then compressed. Because
of this, the first rotation would take the log file out from underneath the
database and it is not recreated.

My suspicion is that the database eventually crashes due to inability to
log. The documentation says the logging_collector will halt other processes
if it is unable to log. However, it seems that the system continues to run
fine for several days before crashing and applications using the database
continue to operate.

Does the logrotate configuration possibly explain the behavior? I can add
the 'copytruncate' option to the logrotate configuration and see if the
issue resolves, but I'd like to also understand the issue. Also, if I add
the 'stderr' destination and continue to rotate the csv log file out, might
I catch errors related to the missing csv log or would the
logging_collector simply continue operating since it still has access to
the stderr log?

Thanks!
LKimmel, RHCE, VCP7-CMA

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Lesley Kimmel (#1)
Re: csvlog Behavior when log file missing

Lesley Kimmel wrote:

I have a system where postgres seems to be randomly dying. When researching the issue
I, of course, began looking at logs.

I found that much of the logs were missing due to logrotate configuration on the server.
Logs were being rotated by size and then compressed. Because of this, the first rotation
would take the log file out from underneath the database and it is not recreated.

My suspicion is that the database eventually crashes due to inability to log.
The documentation says the logging_collector will halt other processes if it is
unable to log. However, it seems that the system continues to run fine for several
days before crashing and applications using the database continue to operate.

Does the logrotate configuration possibly explain the behavior? I can add the
'copytruncate' option to the logrotate configuration and see if the issue resolves,
but I'd like to also understand the issue. Also, if I add the 'stderr' destination
and continue to rotate the csv log file out, might I catch errors related to the
missing csv log or would the logging_collector simply continue operating since it
still has access to the stderr log?

To diagnose the problem, why don't you disable logrotate for a while?

Then you can see if it is part of the problem, but above all nothing will
mess with your log files and you should be able to find out more about the problem.

I never use logrotate with PostgreSQL, but set "log_filename" to "postgresql-%a.log"
or "postgresql-%d.log", "log_truncate_on_rotation" to "on" and "log_rotation_size" to
"0". Then PostgreSQL rotates the log by itself.

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com