Comment installer et utiliser GoAccess Web Log Analyzer avec Apache sous Debian 7

introduction

GoAccess vous permet de surveiller les journaux du serveur Web en temps réel, à l’aide d’un simple tableau de bord en ligne de commande, afin d’afficher et d’analyser rapidement les statistiques de trafic. Il fonctionne entièrement dans un terminal avec des statistiques organisées dans des panneaux distincts sur un tableau de bord déroulant. Il est également possible d’utiliser GoAccess pour générer des rapports de trafic Web HTML, JSON et CSV.

Ce didacticiel explique comment installer le logiciel à partir des sources, puis explique comment utiliser, afficher et parcourir le programme en ligne de commande.

image: https: //assets.digitalocean.com/articles/GoAccess_Apache_Debian/1.jpg [Tableau de bord GoAccess]

GoAccess fonctionnera avec les fichiers journaux de presque tout autre serveur Web. Cependant, le formatage spécifique du fichier journal doit être défini dans GoAccess pour fonctionner correctement.

Ce guide se concentrera sur l’utilisation d’Apache en tant que serveur Web choisi, avec ou sans hôtes virtuels configurés.

Conditions préalables

Veuillez compléter ces conditions préalables avant de commencer ce tutoriel.

Plus le trafic Web géré par le VPS est important, plus le nombre de données utilisées par GoAccess est important - plus c’est mieux, dans ce cas.

Étape 1 - Mise à jour des packages système

Pour commencer, + ssh + sur votre serveur en tant qu’utilisateur disposant des privilèges d’élévation + sudo +. Suivez ensuite les étapes ci-dessous.

ssh @

Cette commande met à jour la base de données du gestionnaire de paquets + apt-get.

sudo apt-get update

Étape 2 - Mise à niveau des packages système

Installez les nouvelles mises à jour des paquets système Debian.

sudo apt-get upgrade

Confirmez lorsque vous êtes invité à mettre à jour de nouveaux paquets en entrant + y + pour oui.

Étape 3 - Installez le paquetage build-essential

Le paquetage + build essential + fournit plusieurs paquets subsidiaires très importants, tels que + make +, nécessaires à la compilation de logiciels sous Debian et Linux. C’est une nécessité pour les étapes d’installation de GoAccess plus loin dans ce guide.

Voici comment installer le paquet en utilisant + apt-get:

sudo apt-get install build-essential

Étape 4 - Installation des dépendances GoAccess

Voici les dépendances nécessaires pour installer et utiliser GoAccess sur votre VPS. Acquérez-les en utilisant le gestionnaire de paquets + apt-get.

sudo apt-get install libncursesw5-dev libglib2.0-dev libgeoip-dev libtokyocabinet-dev

Étape 5 - Configurer le répertoire de construction

Maintenant que les packages système nécessaires sont en place, nous pouvons obtenir et créer GoAccess.

Le répertoire + / usr / local / src + est un endroit approprié pour créer le logiciel GoAccess. Donnez à votre * compte * actuel * propriétaire de ce compte utilisateur de ce répertoire en lançant:

sudo chown $USER /usr/local/src

Puis donnez au répertoire les autorisations de lecture, d’écriture et d’exécution pour ce même utilisateur via la commande:

sudo chmod u+rwx /usr/local/src

Allez dans ce répertoire avec la commande + cd +:

cd /usr/local/src

Étape 6 - Téléchargez et extrayez le code source GoAccess

GoAccess est en version 0.8.5 pour sa version stable au moment de la rédaction. Pour le télécharger, utilisez la commande + wget + ci-dessous.

wget http://tar.goaccess.io/goaccess-0.8.5.tar.gz

Maintenant, la commande + tar peut être utilisée pour extraire et décompresser le fichier` + .tar.gz` téléchargé et son contenu.

tar -zxvf goaccess-0.8.5.tar.gz

Étape 7 - Compiler et installer le code source

Allez dans le répertoire récemment décompressé comme ceci.

cd goaccess-0.8.5/

Exécutez le script configure trouvé dans ce répertoire avec les deux préfixes indiqués dans la commande suivante:

./configure -enable-geoip -enable-utf8

Utilisez la commande + make + pour créer le makefile requis pour l’installation de GoAccess.

make

La commande suivante installera GoAccess (en utilisant le fichier makefile précédemment créé) dans les répertoires système, le rendant ainsi exécutable via Debian.

sudo make install

Étape 8 - Éditez le fichier de configuration GoAccess

Le fichier principal de configuration de GoAccess contient plusieurs lignes dont nous devons tenir un commentaire afin de pouvoir utiliser certaines fonctionnalités avancées du programme ultérieurement dans le didacticiel.

Nous allons éditer le fichier en utilisant l’éditeur de texte + vi + de la manière suivante:

sudo vi /usr/local/etc/goaccess.conf

Un commentaire dans cette configuration est désigné par le signe + # + et signifie que le serveur ignorera les informations suivantes sur la même ligne. Dans ce fichier, nous devons supprimer un total de deux symboles + # + pour supprimer le commentaire de deux lignes.

Le premier est le paramètre + date-format et il apparaît ici comme ceci.

# Apache log date format. The following date format works with any
# of the Apache's log formats below.
#
#date-format %d/%b/%Y

Pour supprimer le symbole de commentaire (+ # +), appuyez plusieurs fois sur + j + pour placer votre curseur sur la ligne à modifier, qui correspond à la ligne + date-format% d /% b /% Y + . Une fois que la ligne a atteint la ligne et que vous sélectionnez les touches + # +, appuyez sur + x + pour la supprimer.

Si cela est fait correctement, votre amendement devrait maintenant ressembler à ceci:

# Apache log date format. The following date format works with any
# of the Apache's log formats below.
#
date-format %d/%b/%Y

_ * Remarque: * Vous pouvez appuyer sur + ECHAP + et taper +: q +, puis + ENTER + pour quitter le fichier sans enregistrer vos modifications, si vous pensez que vous avez commis des erreurs ou des modifications accidentelles. _

La deuxième ligne à ne pas commenter est l’une des lignes + log-format +, et la ligne exacte dépend de votre configuration Apache. Choisissez la première option si vous n’exécutez qu’un seul hôte Apache et la seconde si vous avez _ hôtes virtuels_ configurés. Si vous n’êtes pas sûr, vous devriez probablement suivre la section «Configuration des hôtes non virtuels».

_ * Attention: * Ne commentez que * une * de ces lignes. _

  • Pour les configurations d’hôte non virtuel *

Pour une configuration sans hôtes virtuels, supprimez le symbole dièse de la ligne suivante (+ # +) de la même manière que précédemment.

# NCSA Combined Log Format
#
log-format %h %^[%d:%^] "%r" %s %b "%R" "%u"
#
  • Pour les configurations d’hôte virtuel *

Pour une configuration avec des hôtes virtuels, supprimez le symbole dièse de la ligne suivante (+ # +) de la même manière que précédemment.

# NCSA Combined Log Format with Virtual Host
#
log-format %^:%^ %h %^[%d:%^] "%r" %s %b "%R" "%u"
#

Après avoir supprimé le commentaire * une * des lignes + log-format +, appuyez sur + ESC +. Puis tapez +: wq et appuyez sur` + ENTER`. Ceci écrira les modifications apportées au fichier et quittera l’éditeur de texte + vi +.

Nous pouvons maintenant exécuter GoAccess sur n’importe quel fichier journal Apache en texte brut répondant aux critères de formatage pris en charge.

Étape 9 - Ajoutez votre utilisateur au groupe «adm»

Ajoutons notre utilisateur actuel au groupe d’administrateurs (* adm *) dans Debian afin que nous puissions exécuter ces commandes sans avoir besoin du préfixe * sudo * pour les autorisations d’utilisateur root.

+ usermod + peut changer les propriétés de nos utilisateurs en incluant l’argument + -g + et le nom du groupe que nous souhaitons ajouter à (* adm *), suivis de l’utilisateur en question (dans ce cas * sammy *). Assurez-vous de remplacer ++ dans la prochaine commande par votre propre nom d’utilisateur Linux.

sudo usermod -g adm

Après avoir exécuté la commande ci-dessus, déconnectez-vous de votre VPS en tapant + exit + puis + ENTER +. Reconnectez-vous ensuite au SMV avec votre utilisateur sudo. C’est ainsi que les modifications que nous avons apportées précédemment à l’utilisateur avec + usermod + prennent effet.

exit
ssh @

Vous devez maintenant disposer des autorisations appropriées pour exécuter GoAccess en tant que cet utilisateur * sans utiliser sudo *, et également accéder au répertoire des journaux Apache.

Nous allons maintenant localiser le répertoire des journaux.

Étape 10 - Localisez les fichiers journaux

Les serveurs Web en général enregistrent toutes les demandes HTTP entrantes et traitées pour les fichiers journaux.

Nous devons trouver où Apache stocke ses journaux afin de pouvoir les utiliser. Par défaut, sur les systèmes Debian, les fichiers journaux Apache sont stockés dans:

+ / var / log / apache2 +

Pour voir le contenu de ce répertoire, vous pouvez utiliser la commande list comme ceci:

ls /var/log/apache2

Vous trouverez ici les fichiers journaux décrits précédemment, dont certains sont compressés dans des fichiers + .gz + si votre serveur fonctionne suffisamment longtemps. Le plus récent qui est en cours d’écriture et géré par le serveur Web est celui qui est décompressé et qui s’appelle + access.log +.

Pour une configuration avec des hôtes virtuels configurés, vous devrez peut-être «+ cd » dans les sous-répertoires à partir de « / apache2 +» pour localiser les fichiers journaux de chaque hôte.

Si vous avez trouvé les fichiers journaux ici, passez à l’étape suivante (* Step 11 *).

  • Recherches supplémentaires *

Il vous suffit de lire ces informations supplémentaires si vous rencontrez des problèmes pour localiser vos fichiers journaux.

L’emplacement de ces journaux d’accès est contrôlé par la directive + CustomLog de la configuration d’Apache. Si vous avez modifié ce paramètre, il est possible que vos journaux d’accès Apache se trouvent dans un répertoire différent.

Pour trouver la directive + CustomLog + et sa définition, vous pouvez utiliser + grep + sur l’un des fichiers de configuration d’Apache, comme indiqué dans la commande suivante.

Cela affichera tous les répertoires personnalisés ajoutés dans le fichier + apache2.conf +.

grep CustomLog /etc/apache2/apache2.conf

Sinon, vous pouvez exécuter cette commande, ce qui peut prendre un certain temps si vous avez beaucoup de fichiers sur votre serveur:

sudo find / -name access.log

Tous les fichiers du système nommés + access.log + seront affichés.

Étape 11 - Exécutez GoAccess

Une fois que le répertoire contenant les fichiers journaux de votre serveur Apache est localisé, vous pouvez y exécuter GoAccess avec la commande suivante. Dans cette commande, assurez-vous de remplacer ++ par votre propre chemin de répertoire du fichier journal, s’il est différent de celui standard Apache.

goaccess -f  -a

Une fois cette commande exécutée, le tableau de bord GoAccess s’affiche.

L’argument + -f + indique au programme d’utiliser le chemin de répertoire fourni, et l’argument + -a + active toutes les statistiques enregistrées pour chaque hôte agent analysé.

  • Facultatif: Extraire les journaux archivés *

Si vous souhaitez exécuter GoAccess sur des journaux plus anciens - les fichiers de type compressés + .gz + -, ils doivent être extraits et décompressés. Le programme ne sera * pas * exécuté sur ces fichiers compressés avec la commande ci-dessus.

Vous pouvez faire cette extraction avec le programme + gunzip + dans Debian si vous le souhaitez.

Par exemple:

sudo gunzip /var/log/apache2/

Le nom du fichier + access.log.10.gz + situé à la fin de la commande devra correspondre au nom du fichier compressé que vous souhaitez extraire.

Étape 12 - Naviguez dans GoAccess

Voici le tableau de bord GoAccess.

image: https: //assets.digitalocean.com/articles/GoAccess_Apache_Debian/2.jpg [Tableau de bord GoAccess]

Voici comment interagir avec le tableau de bord:

  • Appuyez sur les touches + F1 + ou + h + pour afficher une petite fenêtre d’aide répertoriant les touches et leurs fonctions décrites ici dans cette section, ainsi que d’autres informations utiles.

  • + 0-9 + ou + SHIFT + 0-9 + permet de sélectionner le module numéroté et de l’activer. Les numéros correspondants sont visibles sur le tableau de bord pour chaque section.

  • + o + ou + ENTER + est utilisé pour développer le module actuellement sélectionné sur le tableau de bord. Les modules sont expliqués dans la section suivante.

  • + j + fera défiler vers le bas dans un module actif développé et + k + reviendra en arrière dans un module actif développé.

  • + s + affiche les options de tri disponibles pour le module actif.

  • Enfin, appuyez sur les touches + q + pour quitter le programme ou la fenêtre en cours, ou pour réduire un module actif, en fonction du niveau de profondeur actuel dans le tableau de bord.

  • Plus d’interaction peut être obtenue à l’aide des touches suivantes: *

  • En appuyant sur la touche + TAB de votre clavier, vous avancerez dans les modules dans l’ordre.

  • Appuyer simultanément sur les touches + SHIFT + + + + TAB + fera l’inverse de la dernière action et effectuera une itération en arrière dans les modules.

  • Vous pouvez appuyer sur + F5 + pour actualiser et redessiner le tableau de bord.

  • + c + lorsqu’il est pressé définit et modifie le jeu de couleurs actuellement utilisé sur le tableau de bord.

  • + g + déplace le focus sur le premier élément et revient en haut de l’écran du tableau de bord.

  • + G + fait défiler jusqu’au dernier élément ou au bas de l’écran du tableau de bord.

Étape 13 - Comprendre les modules

Maintenant que vous pouvez vous déplacer dans l’interface, examinons le contenu réel de chaque module. Les sections correspondent aux modules et titres numérotés du programme. Toutes les valeurs _ «Hit» _ affichées sont basées sur le nombre total de demandes trouvées dans le ou les fichiers journaux fournis (sauf indication contraire).

  • Tableau de bord - Demandes globales analysées *

Le tableau de bord indique le nombre de: demandes valides, demandes non valides, temps pris pour analyser les données fournies, visiteurs uniques sur le serveur, fichiers demandés de manière unique, fichiers statiques uniques (généralement des types de fichiers images), référents HTTP uniques (URL), 404 erreurs non trouvées, la taille du fichier journal analysé et enfin toute la bande passante consommée.

  • 1 - Visiteurs uniques *

Ce module est répertorié par jour avec les dates incluses. Les requêtes HTTP possédant la même adresse IP, la même date et le même agent sont considérées comme une visite unique. Cela inclut les robots Web / araignées.

  • 2 - Fichiers demandés *

Fichiers demandés affiche les fichiers les plus demandés sur votre serveur Web et affiche ledit hits sous forme de nombre et de pourcentage, ainsi que l’heure à laquelle l’hôte a été servi (bande passante), le protocole utilisé et le type de demande utilisé.

  • 3 - Fichiers statiques demandés *

Inclut uniquement les fichiers statiques demandés le plus souvent, tels que: + jpg , ` css `, ` swf `, ' js + , + gif + et + png + `, avec les mêmes métriques que le dernier module fourni pour chaque occurrence.

  • 4 - URL HTTP 404 *

Classé comme les modules précédents avec les mêmes statistiques, ce module répertorie les principales requêtes HTTP 404: Not Found Error récurrentes et l’URL demandée.

  • 5 - hôtes *

Les hôtes ont des informations plus détaillées sur les hôtes eux-mêmes qui se connectent à votre serveur Web, tels que le nombre de connexions, leurs adresses IP global et certains des mêmes types de métriques répétées.

Le module développé ici peut afficher encore plus d’informations, telles que le résultat de la recherche DNS inversée de l’hôte et le pays d’origine, si l’argument + -a + de l’ancien est activé. Une liste d’utilisateurs agents peut être affichée en sélectionnant l’adresse IP souhaitée, puis en appuyant sur + ENTER +.

  • 6 - Systèmes d’exploitation *

Ici, le système d’exploitation de l’hôte est affiché et l’utilisation du système d’exploitation est classée. Ceci est basé sur des visites uniques, contrairement à la plupart des autres données du module.

  • 7 - Navigateurs *

Le module Navigateur suit le même concept que le dernier module, sauf que dans ce cas, le type de navigateur de l’hôte utilisé pour connecter une session est classé à la place. Encore une fois, ceci est basé sur des visiteurs uniques et non sur le total des demandes.

  • 8 - URL de référence *

Si l’hôte en question a accédé au site via une autre ressource, ou s’il était lié / redirigé vers vous depuis un autre hôte, l’URL à partir de laquelle il a été référé sera fourni ici dans ce module.

  • 9 - Sites référents *

Ce module est presque identique au dernier (* URL de référence *); La seule différence est que l’adresse générale du site est affichée et non le point d’origine exact pour une référence.

  • 10 - phrases clés *

Indique les mots clés utilisés dans les recherches Google, le cache Google et Google Translate qui ont amené votre serveur Web à gérer un hôte. À l’heure actuelle, cela ne prend en charge que Google et aucun autre moteur de recherche.

  • 11 - Emplacement géographique *

Ce module contient un résumé des emplacements géographiques déterminés à partir des adresses IP des hôtes hôtes. S’il est incapable de déterminer ceci, il sera marqué comme + location unknown +.

  • 12 - Codes de statut HTTP *

HTTP Status Codes contient des statistiques sur les valeurs des codes de statut globaux dans les requêtes HTTP, exprimées en tant que quantité et pourcentage.

(Facultatif) Utilisation ultérieure de GoAccess

Déplacez-vous dans le répertoire personnel de votre utilisateur avec + cd + et + ~ + + pour continuer à exécuter ces commandes supplémentaires. La commande secondaire + pwd + imprime votre répertoire de travail actuel pour vous permettre de confirmer que vous y avez basculé correctement.

cd ~
pwd

Rapports HTML

Il est possible de générer un rapport HTML en redirecting (+> +) en sortie standard de GoAccess vers un fichier HTML de n’importe quel nom.

Dans cet exemple, le fichier s’appelle + .html + et inclut toutes les statistiques (+ -a +) disponibles dans le fichier journal choisi.

goaccess -f /var/log/apache2/access.log -a > .html

Le fichier + html nouvellement généré est créé dans notre répertoire utilisateurs nom.

Rapports JSON

Vous pouvez créer un rapport de type JSON en ajoutant les arguments + -o + et + json + à la commande. Ici, le fichier de sortie a l’extension + .json +.

goaccess -f /var/log/apache2/access.log -a -o json > .json

Rapports CSV

Pour générer un fichier CSV, suivez la même méthode que précédemment. il suffit d’ajouter l’argument + csv + à la commande et de modifier l’extension du fichier en + .csv +

goaccess -f /var/log/apache2/access.log -a -o csv > .csv

Exécuter des fichiers compressés

Pour que les fichiers compressés soient exécutés via GoAccess, vous pouvez diriger la sortie de la commande + zcat + vers la commande + goaccess +. La commande suivante affiche * tous * les fichiers compressés + .gz + en cours de lecture sans les extraire manuellement au préalable.

zcat /var/log/apache2/access.log.*.gz | goaccess -a

Filtrage par date de début

Pour filtrer à partir d’une date de début spécifiée, vous pouvez utiliser la structure de la commande suivante. Cela assurera l’analyse des demandes HTTP du 20 janvier 2015 jusqu’à la fin du contenu du fichier journal.

sed '//,$ p' /var/log/apache2/access.log | goaccess -a

Sachez que cela ne fonctionnera que si la date que vous entrez est réellement contenue dans le fichier journal transmis.

Filtrage sur les jours

Vous pouvez choisir une date spécifique et filtrer pour afficher le trafic uniquement ce jour-là. Cette fois, nous allons utiliser + grep + pour le faire.

grep '' /var/log/apache2/access.log | goaccess -a

Hors hôtes

Excluez une adresse IP spécifique avec cette commande, en remplaçant «++» par l’adresse IP souhaitée.

goaccess -exclude-ip= -f /var/log/apache2/access.log -a

Utilisation à distance

Si GoAccess est installé sur un ordinateur distant, tel que votre poste de travail local, au lieu de VPS, il est possible de passer en SSH sur votre VPS, puis de lire les fichiers journaux Apache à distance, via piping.

ssh @ 'cat ' | goaccess -a

Conclusion

Après avoir terminé ce guide, vous devez savoir comment installer GoAccess, utiliser ses fonctionnalités essentielles et pouvoir utiliser plusieurs autres fonctionnalités qui rendent GoAccess plus flexible.

Voici un récapitulatif complet de ce qui a été couvert:

  • Obtenir et mettre à jour les paquets nécessaires au système Debian.

  • Installation et création de GoAccess avec son code source.

  • Exécution de GoAccess avec les fichiers journaux du serveur Web Apache.

  • Interaction et navigation dans GoAccess en ligne de commande.

  • Compréhension des modules dans le tableau de bord GoAccess.

  • Création de différents types de rapports à partir de journaux de serveur Web Apache avec redirection.

  • Piping autre commande est générée dans GoAccess.