Table des matières
Gestion des logs avec Yunohost
Les logs de nginx
Description des logs
Les logs de nginx sont stockés dans /var/log/nginx
comme la normale et sont nommés via le nom de domaine. Exemple : saimyx.fr-access.log
pour les journaux d'accès de mon blog. Il y a aussi des journaux d'erreurs.
Par défaut avec Yunohost, le logiciel logrotate
ne garde que 14 jours de logs pour nginx
, et compresse les 12 derniers. Sachant qu'il partitionne les logs en un fichier par jour. Ce qui donne une liste de fichiers ressemblant à :
saimyx.fr-access.log saimyx.fr-access.log.1 saimyx.fr-access.log.2.gz saimyx.fr-access.log.3.gz
Et ainsi de suite jusqu'à saimyx.fr-access.log.14.gz
Changement de configuration
Ce n'est pas très pratique quand on veux avoir des statistiques sur un site Web, notamment avec GoAccess.
Du coup, j'ai modifié le fichier de configuration de logrotate pour nginx (/etc/logrotate.d/nginx
) et j'attends de voir si ça fonctionne.
Utiliser les logs à titre de statistiques
En attendant, je ne pouvais regarder les statistiques avec GoAccess que sur le jour même ou la veille, étant donné qu'il ne comprends pas les fichiers compressés.
J'ai donc copié les 14 fichiers de logs (compressés et non-compressés) dans mon répertoire utilisateur avec la commande suivante : sudo tar -cvf ~/mon-archive-de-log.tar saimyx.fr-access.log*
.
Explications :
- On doit utiliser
sudo
car les fichiers ne sont pas accessibles à un utilisateur normal tar -xvf
permet de créer un fichier d'archive à partir des fichiers donnés (voir après)- Ensuite je donne l'emplacement où je veux mettre mon archive
- Et enfin, je donne les fichiers à compresser. Comme ils commencent tous pareil, je donne le nom en commun et pour lui dire de traiter tous les fichiers ayant ce début, je rajoute l'étoile
*
à partir du moment où il peut y avoir des différences
Ensuite, je vais dans le répertoire où est stocké mon archive, et je la décompresse (tar -xvf mon-archive-de-log.tar
) simplement.
Penser à vous donner les droits en écriture sur les fichiers
Là ça se corse, j'ai mis du temps à trouver, il faut décompresser chaque fichier compressé et hors de question de le faire à la main. J'ai réussi à faire une boucle qui décompresse tous les fichiers contenant le nom choisi.
La boucle ressemble à ça : for i in * do echo $i done
(trouvé ici : https://fr.wikibooks.org/wiki/Programmation_Bash/Boucles) et je l'ai adaptée comme ça :
for i in saimyx.fr-access.log.*.gz; do gzip -d $i; done
En gros chaque fichiers est stocké un par un dans la variable $i
est est décompressé un par un.
Voilà, il n'y a plus qu'à dire à GoAccess d'analyser tous ces fichiers à la foix avec goaccess saimyx.fr-access.log.*
et c'est tout \o/