wiki/HowtoLogrotate.md

90 lines
2.4 KiB
Markdown
Raw Normal View History

2018-01-26 22:35:27 +01:00
---
categories: storage log utilities file filesystem
title: Howto Logrotate
...
2016-12-29 11:25:39 +01:00
2018-01-26 22:35:27 +01:00
* Documentation : <https://linux.die.net/man/8/logrotate>
2016-12-29 11:25:39 +01:00
2018-01-26 22:35:27 +01:00
Logrotate est un programme qui permet de gérer la croissance et
l'historique des fichiers de logs. Le programme est exécuté
régulièrement, avec un fichier de configuration en paramètre.
Par défaut, c'est `/etc/logrotate.conf` qui charge toutes les
configurations présentes dans `/etc/logrotate.d/`. Les paquets des
programmes qui génèrent des logs (par exemple Apache, Postfix, ...)
fournissent généralement une configuration pour logrotate.
2016-12-29 11:25:39 +01:00
2018-01-26 22:35:27 +01:00
Ce programme est spécifique aux distributions Linux, sous les systèmes
de la famille *BSD, l'équivalent de logrotate est newsyslog
# Installation
~~~
# apt install foo
# logrotate --version
logrotate 3.11.0
~~~
2016-12-29 11:25:39 +01:00
# Stratégie de gestion
Il y a de très nombreuses stratégies de gestion des logs, en voici quelques unes illustrées.
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 {
su USER GROUP
weekly
missingok
rotate 52
compress
delaycompress
notifempty
dateext
dateformat .%Y-%m-%d
dateyesterday
copytruncate
}
~~~
Cette stratégie va faire une rotation hebdomadaire, conserver 52 semaines (1 an), compresser les logs passés après les avoir datés.
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 :
~~~
logrotate /etc/logrotate.d/
~~~
### Augmenter la fréquence des logs
Dans le cas où on log beaucoup et on n'a pas beaucoup d'espace libre pour
la partition où résident les logs, on peut augmenter la fréquence de
2018-01-26 22:37:37 +01:00
rotation des logs en appliquant ce pseudo-diff :
~~~
- weekly
+ daily
- rotate 52
+ rotate 365
~~~
## FAQ
2018-01-26 22:00:50 +01:00
### parent directory has insecure permissions
Si erreur du type :
` error: skipping "*.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root")`
2018-01-26 22:00:50 +01:00
Uniquement l'utilisateur concerné par la gestion des logs doit avoir un accès en écriture à ce dossier. Soit un chmod 750 marche bien.
### delaycompress
2018-01-26 22:25:57 +01:00
L'option `delaycompress` permet d'avoir un fichier .1 non compressé (à la place d'un .1.gz donc).
TODO expliquer dans quel cas on veut ça