18
0
Fork 0

reorganization + add example for compress logs whithout rotate

This commit is contained in:
btatu 2019-11-05 17:28:22 +01:00
parent c0507e2cee
commit ef742ba11b
1 changed files with 38 additions and 17 deletions

View File

@ -3,7 +3,10 @@ categories: storage log utilities file filesystem
title: Howto Logrotate title: Howto Logrotate
... ...
* Documentation : <https://linux.die.net/man/8/logrotate> * Documentation :
- <https://linux.die.net/man/8/logrotate>
- <https://manpages.debian.org/cgi-bin/man.cgi?query=logrotate>
Logrotate est un programme qui permet de gérer la croissance et Logrotate est un programme qui permet de gérer la croissance et
l'historique des fichiers de logs. Le programme est exécuté l'historique des fichiers de logs. Le programme est exécuté
@ -13,8 +16,8 @@ configurations présentes dans `/etc/logrotate.d/`. Les paquets des
programmes qui génèrent des logs (par exemple Apache, Postfix, ...) programmes qui génèrent des logs (par exemple Apache, Postfix, ...)
fournissent généralement une configuration pour logrotate. fournissent généralement une configuration pour logrotate.
Ce programme est spécifique aux distributions Linux, sous les systèmes Ce programme est spécifique aux distributions Linux, *sous les systèmes
de la famille *BSD, l'équivalent de logrotate est newsyslog de la famille BSD, l'équivalent de logrotate est newsyslog*
# Installation # Installation
@ -24,15 +27,9 @@ de la famille *BSD, l'équivalent de logrotate est newsyslog
logrotate 3.11.0 logrotate 3.11.0
~~~ ~~~
# Stratégie de gestion ## Rotation et compression de logs
Il y a de très nombreuses stratégies de gestion des logs, en voici quelques unes illustrées. Exemple de configuration pour les serveurs d'application comme Puma, Unicorn, ... :
cf. <https://manpages.debian.org/cgi-bin/man.cgi?query=logrotate>
## Applications Ruby
Pour les serveurs d'application comme Puma, Unicorn, ... :
~~~ ~~~
/home/USER/apps/production/*/shared/log/*.log { /home/USER/apps/production/*/shared/log/*.log {
@ -54,17 +51,43 @@ Cette stratégie va faire une rotation hebdomadaire, conserver 52 semaines (1 an
L'instruction `copytruncate` est importante car le descripteur de fichier ouvert par l'application ne va pas changer. L'instruction `copytruncate` est importante car le descripteur de fichier ouvert par l'application ne va pas changer.
Pour vérifier qu'il n'y a pas d'erreurs de syntaxe : ## Compresser des logs sans faire la rotation
Admettons que l'on ait une application qui fait sa rotation de log mais ne fait pas de compression :
~~~
/usr/local/apps/logs/*.log.*[!gz] {
su USER GROUP
daily
missingok
rotate 365
compress
dateext
dateformat
}
~~~
Cette stratégie va faire une rotation journalière, conserver 365 jours, compresser les logs ayant dans le nom de fichier $NOM__FICHIER.log.$DATE mais ne ne concernant pas les fichiers déjà compressé portant l'extention .gz.
## Tester et valider la configuration
* Pour vérifier qu'il n'y a pas d'erreurs globalement de syntaxe :
~~~ ~~~
logrotate /etc/logrotate.d/ logrotate /etc/logrotate.d/
~~~ ~~~
* Pour débugger le comportement d'un fichier de configuration :
~~~
logrotate --verbose --debug --force /etc/logrotate.d/fichier_configuration
~~~
## FAQ
### Augmenter la fréquence des logs ### Augmenter la fréquence des logs
Dans le cas où on log beaucoup et on n'a pas beaucoup d'espace libre pour Si les logs prennent beaucoup d'espace disque, on peut augmenter la fréquence de rotation en effectuant ce changement :
la partition où résident les logs, on peut augmenter la fréquence de
rotation des logs en appliquant ce pseudo-diff :
~~~ ~~~
- weekly - weekly
@ -73,8 +96,6 @@ rotation des logs en appliquant ce pseudo-diff :
+ rotate 365 + rotate 365
~~~ ~~~
## FAQ
### parent directory has insecure permissions ### parent directory has insecure permissions
Si erreur du type : Si erreur du type :