Administrer un VPS Classic РG̩rer la rotation des logs

 

Rappel : j'héberge un site sur un VPS Classic 1 (10 Go d'espace disque / 1Go de RAM) de chez OVH tournant sous Release 3 (CentOS 6.6 – Webmin)

Quand on achète un hébergement mutualisé, on pense à l'espace libre pour le site et pour sa base de données. Mais quand il s'agit d'un dédié ou un VPS, il ne faut également prendre en compte l'espace pour le système d'exploitation et pour les logs.

Un log est un fichier listant les événements se produisant au niveau du système. Logs d'erreur, logs d'accès… pour peu que votre site soit assez fréquenté, vous vous retrouvez rapidement avec 50 Mo de logs par jour… Or les systèmes sous Linux supportent assez mal les disques durs pleins.

Par défaut sur ce VPS, le paramétrage de rotation des logs est d'une rotation par semaine, en conservant 52 archives ! Il va falloir calmer tout ça…

Pour afficher la liste complète des paramètres

En ligne de commande.

man logrotate.conf

Paramétrage

Comme toujours, ça commence par une fastidieuse recherche du bon fichier de configuration. Oui, parce qu'il y en a plusieurs. Et comme la rotation des logs se fait une fois par nuit grand max, impossible de vérifier tout de suite si on a modifié bon…

logrotate est lancé quotidiennement via le cron grâce à /etc/cron.daily/logrotate

Son fichier de configuration général est /etc/logrotate.conf

Mais il est préférable de configurer chacun des fichiers de configuration des daemons individuellement. On trouve ceux-ci dans logrotate.d

Petitex explication de leur contenu :

  • /var/log/httpd/*log tout fichier se trouvant dans /var/log/httpd et dont le nom se termine par log
  • rotate 52 on garde 52 exemplaires des anciens logs
  • weekly rotation hebdomadaire (après que cette période se soit écoulée)
  • postrotate ce qui faut faire après (redémarrer le service httpd)
  • compress compression des anciens fichiers de log pour faire de la place
  • delaycompress compression reportée à la rotation suivante
  • sharedscripts un seul script exécuté pour toutes les rotations

On peut éventuellement a ajouter ceci :

  • size taille max du fichier log au-delà de laquelle il faut lancer la rotation
  • minsize idem sauf que c'est utilisé en combinaison avec la période (si la semaine est écoulée ET si le log dépasse la taille définie)
  • notifempty ?

Voici finalement la configuration que j'ai adoptée :

/var/log/httpd/*log {
 weekly
 rotate 7
 size 20M
 compress
 delaycompress
 sharedscripts
 postrotate
 if [ -f /var/run/httpd/httpd.pid ]; then
 service httpd restart > /dev/null
 fi
 endscript
}

Sources

Log rotation in CentOS Linux

Karine SANCHE

Partager cet article