Mongo docs dit que je peux:
- utiliser le signal -SIGUSR1 et obtenir l'ancien journal renommé et le courant commuté
- utiliser logrotate à partir du système d'exploitation
Je veux que la capacité de rotation du système d'exploitation du système d'exploitation pour compresser les anciens fichiers et supprimer les plus anciens, mais ne vois aucun moyen de dire au processus mongod de basculer le journal actuel autre que l'envoi de SIGUSR1.
J'ai donc écrit
/var/log/mongodb/*.log {
daily
rotate 5
compress
dateext
missingok
notifempty
sharedscripts
postrotate
/usr/bin/killall -SIGUSR1 mongod
/usr/bin/killall -SIGUSR1 mongos
endscript
}
à /etc/logrotate.d/mongo.
Et maintenant, obtenez des fichiers journaux bien nommés à partir de logrotate et des fichiers journaux vides comme des mongodb.log.2013-09-18T23-49-44
traces de commutation SIGUSR1. Comment se débarrasser de ce dernier?
Le serveur s'est bloqué pour moi si vous envoyez SIGUSR1 à mongod après avoir déplacé le fichier journal avec logrotate.
La configuration suivante est sûre pour la version que j'ai testée - 2.6.6 sur ubuntu 12.04 - les exemples précédents ont planté le serveur. Mettez ceci dans /etc/logrotate.d/mongod:
Voir: https://jira.mongodb.org/browse/SERVER-11087 pour plus de détails et une suggestion d'Akshay Kumar que j'ai utilisée dans ce qui précède (utilisez create au lieu de nocreate et cp / dev / null dans le fichier journal).
Dans les versions ultérieures, il est censé y avoir une option logRotate que vous pouvez utiliser pour rouvrir le fichier - pas le renommer - qui contournera le problème de renommage - mais cela n'a pas fonctionné dans ma version (elle n'était pas prise en charge).
Voir: https://github.com/mongodb/mongo/commit/616461d294bd9f5054ca38b302b6fc5d70fde20c
Je l'ai testé avec
la source
systemLog.logRotate: reopen
dansmongod.conf
, le pkill fonctionnera comme prévu et aucune suppression du fichier journal est renommé requise car est créé.Depuis mongodb 3.0, vous pouvez changer le comportement de mongodb avec le paramètre logRotate, changez dans /etc/mongod.conf
Voir aussi Mongo Manuals .
Ensuite, vous pouvez utiliser cette configuration logrotate:
la source
processManagement.pidFilePath
dans la configuration ou le paramètre PIDFile du fichier d'unité SystemD (/var/run/mongodb/mongod.pid
pour moi)Ce qui suit a fonctionné pour moi:
Remarques:
kill
est un Bash intégré mais logrotate fonctionne sous/bin/sh
- qui ne reconnaît pasSIGUSR1
sur RedHat 6.5compress
mais ça devrait être un ajout directla source
Notez que dans la version 3.0 et supérieure, il n'est pas nécessaire de tuer votre démon de base de données simplement pour faire pivoter un journal. Consultez la documentation ici:
https://docs.mongodb.com/manual/tutorial/rotate-log-files/
la source