Accueil TechnologiesDocker GoAccess : analyseur et visualiseur de logs
GoAccess - l'analyseur et visualiseur de logs

GoAccess : analyseur et visualiseur de logs

par Jérémy PASTOURET

Quand on est développeur, on rencontre constamment nos amis les logs. Ils sont partout, à chaque instant d’utilisation des programmes, pages web, etc. Ils nous permettent de comprendre pourquoi tel utilisateur a eu une erreur 500 qui a tout fait planter. Mais aussi de savoir si un bot essaye de faire tomber notre service avec des attaques DDOS, en requêtant tout le temps la même adresse Web.

Sauf que lire des logs n’est pas une activité super fun. Si vous n’en avez jamais vu, je vous propose un petit extrait des logs de notre blog. Voici les logs d’accès, c’est-à-dire la liste des pages consultées par les visiteurs :

157.55.39.0 les-enovateurs.com - [08/Nov/2018:00:04:43 +0100] "GET /wp-content/uploads/2017/11/Maison-z%C3%A9ro-d%C3%A9chet.jpg HTTP/1.1" 200 99670 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.39.0 les-enovateurs.com - [08/Nov/2018:00:04:44 +0100] "GET /wp-content/uploads/2016/10/20161020_120756.jpg HTTP/1.1" 200 401386 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
107.178.194.0 les-enovateurs.com - [08/Nov/2018:00:06:11 +0100] "GET / HTTP/1.1" 200 17726 "-" "Mozilla/5.0 (compatible; Google-Apps-Script)"
66.249.66.0 les-enovateurs.com - [08/Nov/2018:00:03:13 +0100] "GET /idees-cadeaux-noel-ecolo/amp/ HTTP/1.1" 200 6585 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Et ci-dessous, voici le fichier des erreurs qui ont été levées en PHP ou par le serveur apache :

[Thu Nov 08 04:19:06 2018] [error] [client 185.184.157.95] [host les-enovateurs.com] (104)Connection reset by peer: AH10143: FastCGI: comm with server "/homez/les-enovateurs.com/index.php" aborted: read failed
[Thu Nov 08 04:19:06 2018] [error] [client 185.184.157.95] [host les-enovateurs.com] AH10149: FastCGI: incomplete headers (0 bytes) received from server "/homez/les-enovateurs.com/index.php"
[Thu Nov 08 04:19:06 2018] [error] [client 185.184.157.95] [host les-enovateurs.com] AH10157: FastCGI: An error happend on Fastcgi processing, fallback to CGI
[Thu Nov 08 11:54:49 2018] [error] [client 213.251.182.103] [host les-enovateurs.com] AH10141: FastCGI: comm with server "/homez/les-enovateurs.com/wp-cn.php" aborted: idle timeout (300 sec), referer: https://les-enovateurs.com/wp-cn.php?doing_wp_cron=1541674188.9945769309997558593750

Ces longues listes sont effectivement lisibles pour nous, pauvres humains… mais c’est fastidieux. Surtout quand on se retrouve avec 300000 lignes de logs.

Mais aujourd’hui, j’ai découvert une première solution.

Qu’est-ce que GoAccess ?

GoAccess - Exemple

C’est un outil qui vous permet de générer un fichier HTML correspondant à un joli dashboard, avec des stats et des graphiques qui plairont à tout bon manager. Si vous êtes un vrai barbu (geek qui a bien utilisé le minitel), vous pouvez afficher votre dashboard en version console.

GoAccess Console Analyse

GoAccess est familier avec les logs d’Apache, Nginx, Amazon S3, Elastic Load Balancing, AWS CloudFront… Ce qui est plutôt intéressant si votre service utilise ces technologies.

Fonctionnalités de GoAccess

  • Visualiser les logs en temps réel sans rafraîchir la page
  • Voir le nombre de visiteurs
  • Prendre connaissance du nombre de pages consultées
  • Voir la bande passante du site
  • Voir les requêtes Web les plus lentes (afin de les améliorer)
  • Gérer plusieurs environnements de logs (Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront)
  • GoAccess est écrit en C, il est rapide et puissant
  • Les données sont même consultables par VirtualHost : c’est utile si vous avez plusieurs sites sur un même serveur
  • Connaître le temps de réponse du serveur
  • Installation rapide
  • Le thème visuel est customisable (trois thèmes de base sont disponibles)
  • Le mode console est plutôt sympa aussi

Pas encore convaincu ? Alors vous pouvez consulter la démo ici.

Installation de GoAccess sur un serveur Linux classique

On peut installer GoAccess en effectuant la commande suivante :

sudo apt-get install goaccess

Dès que l’outil est installé, il n’y a plus qu’a l’utiliser. Vous êtes prudent comme moi ? Alors je vous conseille d’exécuter les commandes sur un PC en local Linux pour voir comment cela fonctionne, avant de le mettre sur un serveur de production. Dans un premier temps, je vous propose de lire un fichier de logs téléchargé d’un serveur apache en production.

Mon fichier access.log est le même que je vous ai montré plus haut. Il ne nous reste plus qu’a faire analyser le fichier par GoAccess, qui générera un fichier HTML tout joli. Pour cela, exécutez la commande suivante :

goaccess access.log -o report.html --log-format=COMBINED

GoAccess va donc analyser votre fichier et vous ressortir un fichier HTML.

goaccess access.log -o report.html --log-format=COMBINED

Il vous reste plus qu’a ouvrir le fichier HTML dans votre navigateur préféré. Voici le mien, si vous souhaitez l’examiner sur votre PC :

📄 Rapport sur les Enovateurs

Si vous êtes plutôt de l’ancienne école, vous pouvez faire un :

goaccess access.log -c

Vous pouvez même faire la configuration dans la console, choisir le format des logs et indiquer si vous souhaitez un affichage en temps réel.

Et justement, après avoir testé le bon fonctionnement de GoAccess, vous avez peut-être envie qu’il passe en mode temps réel. Pour ce faire, indiquez simplement le bon chemin de votre access.log. Par exemple si vous utilisez apache, vous pouvez taper la commande suivante :

goaccess /var/log/apache2/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html

Au démarrage du serveur, le service se lance tout seul ; je vous laisse avec mon ami le service cron.

Sachez également qu’une version Docker existe. Si cela vous intéresse, voici le lien. Et si vous rencontrez des problèmes, écrivez moi un commentaire, je vous répondrai rapidement.

Vous pourriez aussi aimer

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.