Outils pour utilisateurs

Outils du site


yunohost-logs

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/

yunohost-logs.txt · Dernière modification : 2024/07/06 18:44 de 127.0.0.1