Ich wollte die Protokollrotation von MongoDB durchführen, also habe ich sie überprüft und festgelegt. (Version ist 3.4)
Ich möchte das Protokoll einmal am Tag drehen. Ich möchte die Protokolldatei nach der Rotation benennen mongod.log_yyyymmdd. Ich möchte automatisch komprimieren. Ich möchte es nach einer bestimmten Zeit automatisch löschen, anstatt es weiter zu akkumulieren.
In logrotate wie folgt einstellen
# vi /etc/logrotate.d/mongod
/usr/local/var/log/mongodb/mongod.log
{
missingok
daily
dateext
rotate 30
create
compress
delaycompress
postrotate
/bin/kill -SIGUSR1 `cat /var/run/mongodb/mongod.pid 2> /dev/null` 2> /dev/null || true
find /data/mongodb/logs -type f -size 0 -regextype posix-awk -regex "^\/usr\/local\/var\/log\/mongodb\/mongod\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}-[0-9]{2}-[0-9]{2}$" -execdir rm {} \; >/dev/null 2>&1
endscript
}
Wenn ich MongoDB mit kill -SIGUSR1 drehe, erstellt MongoDB eine leere Protokolldatei mit dem Namen mongod.log.yyyy-mm-ddTxx-xx-xx. Daher verwende ich find, um sie zu löschen.
Wenn Sie nocreate anstelle von create wählen, verliert MongoDB den Überblick über die Protokolldatei. MongoDB endet abnormal zum Zeitpunkt der Drehung.