In diesem Artikel werde ich über die MongoDB-Protokollrotation berichten. Protokolle sind Textdateien, die während der Ausführung unseres Programms Informations-, Warn- oder Fehleraufzeichnungen enthalten können. Wir müssen eine Protokollrotation durchführen, da diese Dateien zu groß werden und zu viel Speicherplatz beanspruchen können. Auch das Öffnen und Analysieren großer Dateien dauert länger. Alte Protokolldateien können auch gezippt werden, um ihre Größe zu reduzieren.
Ich werde eine virtuelle CentOS 7-Maschine verwenden, die in VMware Workstation mit 1 vCPU, 1 GB RAM und 20 GB Festplattenspeicher erstellt wurde, und MongoDB 3.4.
Standardmäßig befinden sich MongoDB-Protokolle in /var/log/mongodb. Sie können den Speicherort der Protokolldatei ändern, indem Sie den MongoDB-Dienst mit –logpath . starten
# mongod -v --logpath /var/log/mongodb/server1.log
Der einfachste Weg, die Protokollrotation durchzuführen, ist die manuelle Ausführung
# kill -SIGUSR1 $(cat /var/lib/mongo/mongod.lock)
und entferne Protokolle
# rm -rf /var/log/mongodb/mongod.log.*
oder komprimieren Sie sie, um Speicherplatz freizugeben
# tar -cf /var/log/mongodb/mongod.log.*
Das Signal SIGUSR1 wird an den Mongod-Prozess gesendet und führt eine Log-Rotation durch.
Eine andere Möglichkeit, die Protokollrotation durchzuführen, besteht darin, die Mongo-Konsole aufzurufen, indem Sie ‘mongo’ in die Befehlszeile eingeben. Dann in der Datenbankkonsole ausführen
> use admin
> db.runCommand( { logRotate : 1 } )
Ausgabe muss sein
{ "ok" : 1 }
Sie können das Verhalten des Befehls logRotate auch festlegen, indem Sie mongo mit dem . starten –logRotate Schlüssel. Sie sollten die Option für dieses Schlüsselumbenennen oder erneutes Öffnen angeben. Standardmäßig wird die Option Umbenennen verwendet. Die Option Umbenennen benennt nur die Protokolldatei um. Die Option zum erneuten Öffnen schließt die Datei und öffnet sie erneut. Diese Option muss verwendet werden mit –logappend Schlüssel und logrotieren Dienstprogramm, um Datenverlust zu vermeiden.
Für die automatisierte Rotation können wir verwenden logrotieren Dienstprogramm.
Zuerst Datei erstellen
# vi /etc/logrotate.d/mongodb
und dort einfügen
/var/log/mongodb/mongodb.log {
daily
rotate 30
compress
missingok
sharedscripts
postrotate
kill -SIGUSR1 $(cat /var/lib/mongo/mongod.lock)
endscript
}
Nur ein paar Worte zu dieser Konfigurationsdatei. ‘Täglich’ bedeutet, dass Protokolle täglich rotiert werden, ‘Rotation 30’ – Protokolle werden 30 Tage lang aufbewahrt, bevor sie per E-Mail gesendet oder gelöscht werden, ‘komprimieren’ – alte Protokolle werden mit gzip komprimiert, ‘missingok’ – Fehler überspringen in jede Protokolldatei fehlt, ‘sharedscript’s – Skripte, die das Skript einmal ausführen, ‘postrotate’ und ‘endscript’ – Skript nach der Protokollrotation ausführen.
Protokolle können auch an die Host-Systemprotokolldatei gesendet werden, indem Sie mongo instanse mit ausführen –syslog. Diese Option wird nicht unterstützt auf Windows-Hosts.