Le blog de Genma
Vous êtes ici : Accueil » Yunohost » Yunohost - Goaccess - Rapport HTML depuis des logs d’un serveur web

Yunohost - Goaccess - Rapport HTML depuis des logs d’un serveur web

D 25 septembre 2017     H 09:00     A Genma     C 0 messages   Logo Tipee

TAGS : Planet Libre Yunohost Tutoriaux

Présentation de GoAcess

GoAccess présente des statistiques en lisant les logs de votre serveur Web, non pas en exécutant du code côté utilisateur.

Site : https://goaccess.io/

GoAccess fonctionne en ligne de commande et présente par défaut ses résultats dans la console, en temps réel. Une série de panels (que l’on peut étendre individuellement) présentent les différents types de données : nombres de visiteurs uniques, URL non trouvées, OS, etc. Classique. Il est également possible de générer une − plutôt jolie − page html

Le site GoAccess : analyse simple et efficace des logs d’un serveur Web - https://hal-9000.fr/?s11R3Q a fait un tutoriel qui montre qu’il est assez simple d’installer et d’utiliser GoAccess.

Autres tutoriels présentant des astuces complémentaires :
 Goaccess : un autre outil de Web Analytics par Denis Szalkowski
 GoAccess – Des logs web en temps réel et en cli

GoAccess répond à mon besoin

J’ai étudié différents systèmes permettant de générer des rapports à partir de logs, je connais un peu ELK (ElasticSearch, LogStash, Kibana), mais ça reste très complexe et un peu usine à gaz pour mon besoin qui est de tout simplement superviser / avoir des rapports issus des logs de mon serveur Yunohost. Donc GoAcess correspond bien à mon besoin.

Par défaut, Yunohost conserve les logs du serveur Nginx un certain temps (il faudra que je regarde en détail la configuration de logrotate), cela convient

Automatisons un peu tout ça...

L’objectif est d’avoir des rapports réguliers en HTML. Pour ça, j’ai mis en place une tâche CROn qui va faire une concatènation des différents fichiers de logs et générer un seul et même rapport HTML via GoAccess qui contient donc une visualisation graphique de l’ensemble des données issues de ces logs. Je peux ensuite m’envoyer le rapport par mail, le récupérer, le mettre à disposition dans un espace dédié du serveur web...

#/bin/bash

# On fait le cat dans /tmp pour que ce soit effacer ensuite
cat /var/log/nginx/blog.genma.fr-access.log* > /tmp/blog.genma.fr-access.full.log
echo "Goacess - Lancement de la generation des rapports HTML"
goaccess --log-format=COMBINED -f /tmp/blog.genma.fr-access.full.log -a -o BlogFullReport.html
# Le fichier BlogFullReport.html contient un beau rapport HTML complet généré par Goaccess.
echo "Goacess - Fini"

Yunohost ?

Yunohost propose la création de coquille vide pour des applications, via les Multi Custom Webapp, une version forkée des Custom Webapp qui permettent d’en créer plusieurs.

J’installe l’application en indiquant comme paramétrage :
 Nom de l’application : GoAccess
 Adresse et chemin : moninstanceyunohost.fr et /goacess comme sous répertoire
 Utilisateur : genma

Ca mouline (il y a la création et modification de la configuration nginx qui se fait) et ensuite j’ai bien une tuile "GoAccess" dans la liste des applications et un dossier "/var/www/webapp_genma/GoAccess" dans lequel j’ai par défaut le fichier "index.html".

Il ne reste qu’à ajouter au script ci-dessus une ligne du type

mv /tmp/BlogFullReport.html /var/www/webapp_genma/GoAccess

et depuis un navigateur web, en étant connecté à Yunohost d’aller sur
https://moninstanceyunohost.org/goacess/BlogFullReport.html

pour avoir le beau rapport généré par GoAccess !

Aller plus loin ?

Il suffit de faire un script un peu plus avancé, de le mettre en tâche planifiée (cron) et de créer par exemple un fichier index.html qui contiendra par exemple une série de liens :
 BlogFullReport_Jour1.html
 BlogFullReport_Jour2.html
 BlogFullReport_Jour3.html
 InstanceFullReport_Jour1.html
 InstanceFullReport_Jour2.html
 InstanceFullReport_Jour3.html

Ici les fichers InstanceFullReport_JourX.html étant généré par une ligne faisant appel à GoAcess mais pour un cumul de logs de fichiers Nginx pour l’instance (cumul des fichiers de log nginx pour monistanceyunohost.fr).