GoAccess est un analyseur de journaux léger open source qui peut lire et analyser des fichiers journaux de plusieurs formats, notamment Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, Caddy, etc. Il est écrit en langage C et utilise la bibliothèque ncurses pour son interface de tableau de bord, accessible depuis la ligne de commande.
Il peut générer des rapports au format HTML, JSON et CSV, qui peuvent être partagés avec d'autres. Vous pouvez même générer des rapports HTML en temps réel qui peuvent être affichés via un lien public.
Dans ce didacticiel, vous apprendrez à installer GoAccess Analyzer sur un serveur basé sur Rocky Linux et à le configurer pour lire les journaux Nginx et fournir des rapports en temps réel.
Prérequis
-
Un serveur exécutant Rocky Linux 8.
-
Un utilisateur non root disposant des privilèges sudo.
-
Nginx exécuté sur le serveur pour accéder aux journaux.
-
Assurez-vous que tout est mis à jour.
Mise à jour $ sudo dnf
Étape 1 - Installer les dépendances pour GoAccess
La dernière version de GoAccess v1.5.2 n'est pas disponible dans le référentiel par défaut. Pour installer la dernière version de GoAccess, nous allons la créer à partir de la source. La première étape consiste à télécharger les dépendances nécessaires à la création du package GoAccess.
$ sudo dnf install ncurses-devel libmaxminddb-devel openssl-devel $ sudo dnf groupinstall 'Outils de développement'
Étape 2 - Télécharger et installer GoAccess
Téléchargez la dernière version de l'archive GoAccess. Vous pouvez trouver la dernière version de GoAccess sur la page de téléchargement officielle.
$wget https://tar.goaccess.io/goaccess-1.5.2.tar.gz
Extrayez les fichiers de l'archive.
$ tar -xzvf goaccess-1.5.2.tar.gz
Configurez et installez le package.
$ cd goaccess-1.5.2$ autoreconf -fi$ sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl$ sudo make$ sudo make install
Vérifiez que GoAccess est en cours d'exécution.
$ goaccess --versionGoAccess - 1.5.2.Pour plus de détails, visitez :https://goaccess.io/Copyright (C) 2009-2020 par Gerardo OrellanaConstruisez les arguments de configuration :--enable-utf8 --enable-geoip=mmdb --with-openssl
Étape 3 - Télécharger la base de données GeoIP
Vous pouvez télécharger la base de données GeoIP depuis DB-IP ou Maxmind. Si vous comptez télécharger depuis Maxmind, vous devrez créer un compte et générer une clé de licence gratuite. Le téléchargement depuis DB-IP peut être effectué directement.
Téléchargez le fichier zip du pays à partir de l'une des sources ci-dessus. Une fois téléchargés, extrayez-les et téléchargez le .mmdb
fichier sur le serveur dans un dossier personnalisé comme /home/<user>/geoip
.
Étape 4 - Configurer GoAccess
GoAccess stocke son fichier de configuration dans /usr/local/etc/goaccess/goaccess.conf
. Vous pouvez vérifier l'emplacement du fichier sur votre système à l'aide de la commande suivante.
$ goaccess --dcf/usr/local/etc/goaccess/goaccess.conf
Ouvrez le fichier pour le modifier.
$ sudo nano /usr/local/etc/goaccess/goaccess.conf
La plupart des options sont commentées. Vous pouvez soit utiliser ces options via la ligne de commande, soit les définir dans le fichier ici. Pour activer une option, supprimez le #
caractère devant.
Tout d'abord, activons le time-format
option. Nous allons analyser les fichiers Nginx dans notre tutoriel, alors activez l'option destinée aux journaux Apache/Nginx.
# Le format d'heure suivant fonctionne avec l'un des# formats de journal d'Apache/NGINX ci-dessous.#time-format %H:%M:%S
Ensuite, activez le date-format
Nginx option.
# Le format de date suivant fonctionne avec l'un des# formats de journal d'Apache/NGINX ci-dessous.#date-format %d/%b/%Y
Ensuite, activez le log-format
option. Dans notre tutoriel, nous utiliserons le combined
format de journal, ce que Nginx utilise couramment.
log-format COMBINE
Si vos fichiers journaux contiennent le champ Hôte virtuel, activez plutôt l'option suivante.
log-format VCOMBINÉ
Supposons que vous vouliez plus de contrôle sur le format du journal. Dans ce cas, vous pouvez activer la ligne suivante à la place (selon le journal auquel vous accédez) et ajouter ou supprimer des paramètres selon vos besoins.
log-format %v :%^ %h %^[%d :%t %^] "%r" %s %b "%R" "%u"
Pour activer le module GeoIP, activez l'option suivante en saisissant le chemin d'accès à la base de données GeoIP.
# Pour la base de données GeoIP2 Country :# Téléchargez le fichier GeoLite2-Country.mmdb.gz# gunzip GeoLite2-Country.mmdb.gz#geoip-database /home/geoip/dbip-country-lite-2021-10.mmdbEnregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité une fois terminé.
Étape 5 - Exécuter GoAccess
Normalement, si vous souhaitez exécuter GoAccess, vous devrez utiliser la commande suivante.
$ sudo /usr/local/bin/goaccess /var/log/nginx/access.logNous devons utiliser sudo car les utilisateurs réguliers ne peuvent pas ouvrir les fichiers journaux. De plus, vous devrez utiliser le chemin complet de l'exécutable avec la commande sudo car la commande sudo ne reconnaît pas les applications dans
/usr/local/bin
annuaire. Vous pouvez cependant contourner la limitation en créant un lien symbolique.Pour ce faire, exécutez la commande suivante.
$ sudo ln -s /usr/local/bin/goaccess /usr/bin/goaccessMaintenant, vous pouvez exécuter GoAccess directement.
$ sudo goaccess /var/log/nginx/access.logLes fichiers journaux Nginx conservent un enregistrement de tout le trafic HTTP entrant. Si votre serveur fonctionne depuis longtemps, vous verrez plusieurs journaux d'accès avec les journaux les plus anciens au format compressé
.gz
format. Les anciens fichiers journaux sont générés à la suite de la rotation des journaux.Une fois que vous avez exécuté la commande, vous serez accueilli avec le tableau de bord suivant.
GoAccess vous propose plusieurs raccourcis clavier pour naviguer dans le tableau de bord.
TAB
pour avancer dans les modules disponibles etSHIFT+TAB
pour reculer.F5
pour actualiser le tableau de bord.g
pour aller en haut de l'écran du tableau de bord etG
pour se déplacer vers le bas.o
ouENTER
pour développer le module sélectionné.j
etk
pour faire défiler vers le bas et vers le haut dans le module actif.s
pour afficher les options de tri du module actif./
pour rechercher dans tous les modules etn
pour passer au match suivant.0-9
etSHIFT+0
pour activer rapidement le module numéroté respectif.?
pour afficher la boîte de dialogue d'aide rapide.q
pour quitter le programme.
Passons en revue tous les panneaux en bref.
-
Visiteurs uniques par jour - Ce panneau est explicite. Il répertorie les visiteurs uniques, les visites et la bande passante cumulée pour chaque date. Il inclut également les robots d'exploration et les araignées Web par défaut.
-
Fichiers demandés (URL) - Ce panneau fournit les statistiques concernant les fichiers non statiques les plus demandés sur votre serveur.
-
Requêtes statiques - Il est similaire au panneau ci-dessus sauf qu'il gère les fichiers statiques comme les images, CSS, JavaScript, etc.
-
URL introuvables (404) - Ce panneau enregistre toutes les requêtes vers des fichiers et des chemins introuvables sur votre serveur.
-
Noms d'hôte et IP des visiteurs - Ce panneau donne plus d'informations sur les visiteurs de votre site. Vous pouvez appuyer sur
o
pour développer le panneau afin d'obtenir des informations détaillées telles que le pays d'origine, la ville et le DNS inversé. -
Systèmes d'exploitation - Ce panneau affiche différents systèmes d'exploitation utilisés par les visiteurs.
-
Navigateurs - Ce panneau présente les différents navigateurs utilisés par les visiteurs.
-
Répartition horaire - Ce panneau fournira un rapport horaire pour le nombre de visites, de visiteurs uniques et de bande passante consommée.
-
Hôtes virtuels - Ce panneau affiche les hôtes virtuels analysés à partir du fichier journal. Il n'apparaîtra que si vous utilisez le
VCOMBINED
log format dans le fichier de configuration ci-dessus ou si%v
fait partie de la configuration du format de journal. -
URL de référence - Ceci répertorie les URL qui renvoient les visiteurs vers votre serveur. Ce panneau est désactivé par défaut. Pour l'activer, commentez la ligne suivante dans le fichier de configuration en ajoutant
#
devant.#ignore-panel REFERRERS
-
Sites référents - Ce panneau affiche les adresses IP des hôtes référents.
-
Phrases clés - Ce panneau affiche les mots clés utilisés sur Google Search, Google cache ou Google Translate qui mènent à votre site. Ce panneau est également désactivé par défaut. Activez-le en commentant la ligne suivante dans le fichier de configuration.
#ignore-panel PHRASES CLÉS
-
Codes d'état HTTP - Ce panneau affiche les statistiques des codes d'état HTTP renvoyés par votre serveur lorsqu'il répond à une requête.
-
Utilisateur distant (authentification HTTP) - Ce panneau affiche l'ID utilisateur de la personne accédant à un document sur votre serveur, protégé par une authentification HTTP. Ce panneau ne fonctionne que si
%e
fait partie de la configuration du format de journal. -
État du cache - Ce panneau détermine si une demande est mise en cache et servie à partir de celle-ci. Ce panneau ne fonctionne que si
%c
fait partie de la configuration du format de journal. -
Géolocalisation - Ce panneau fournit une liste des emplacements géographiques des visiteurs accédant à votre site. Il n'apparaîtra que si vous avez téléchargé et ajouté son emplacement dans le fichier de configuration.
Étape 6 - Exécuter GoAccess en mode non privilégié
En tant que bonne pratique de sécurité, moins il y a de code qui fonctionne en tant que root, mieux c'est. Pour exécuter GoAccess sans root, il a besoin d'autorisations pour lire les fichiers journaux.
Les fichiers journaux du serveur font généralement partie du adm
grouper. Vous pouvez le vérifier en utilisant la commande suivante.
$ ls -l /var/log/nginxtotal 68-rw-r----- 1 nginx adm 30547 Oct 10 12:47 access.log-rw-r----- 1 nginx adm 35063 Oct 10 12:47 error.log
Comme vous pouvez le voir, vous n'avez pas besoin d'être un utilisateur root pour ouvrir les fichiers journaux. Tout utilisateur appartenant à l'adm
groupe peut ouvrir les fichiers.
Le moyen le plus simple d'exécuter GoAccess sans racine consiste à ajouter l'utilisateur actuellement connecté à adm
grouper. De cette façon, vous pouvez exécuter GoAccess sous cet utilisateur sans sudo.
Exécutez la commande suivante pour ajouter l'utilisateur actuel au adm
groupe.
$ sudo usermod -aG adm $USER
Maintenant, déconnectez-vous et reconnectez-vous pour appliquer la modification. Ou vous pouvez exécuter la commande suivante sans avoir à vous déconnecter pour mettre en œuvre la modification.
$ sur $USER
Vous devriez pouvoir exécuter GoAccess directement sans avoir besoin de sudo.
$ goaccess /var/log/nginx/access.log
Étape 7 - Générer des rapports HTML
GoAccess peut être utilisé pour générer des rapports HTML que vous pouvez les servir en ligne. Utilisez la commande suivante pour générer un rapport HTML.
$ goaccess /var/log/nginx/access.log -o stats.html
Vous pouvez soit télécharger le fichier sur votre PC local pour vous-même, soit dans le dossier de votre site Web pour le diffuser publiquement.
Vous pouvez même générer un rapport HTML en temps réel à l'aide de GoAccess. Mais d'abord, vous devez ouvrir le port 7890 pour que GoAccess Websocket s'exécute. Ouvrez le port à l'aide de la commande suivante.
$ sudo firewall-cmd --permanent --add-port=7890/tcp
Rechargez le pare-feu pour appliquer la modification.
$ sudo firewall-cmd --reload
Maintenant, exécutez la commande suivante pour générer un rapport HTML en temps réel.
$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html
Cela générerait un rapport en temps réel à l'emplacement spécifié. La commande ci-dessus maintiendra GoAccess en cours d'exécution au premier plan en tant que WebSocket à l'écoute des connexions.
Il y a une petite mise en garde avec l'exécution de la commande ci-dessus. La commande ci-dessus fonctionnera lorsque GoAccess dispose des autorisations utilisateur sur /usr/share/nginx/html
annuaire. Étant donné que nous exécutons GoAccess sous l'utilisateur actuellement connecté, vous devez accorder à cet utilisateur des autorisations sur /usr/share/html
annuaire. Si vous ne pouvez pas attendre pour une raison quelconque, vous devrez exécuter GoAccess en utilisant sudo.
$ sudo goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html
Si vous souhaitez exécuter GoAccess en arrière-plan, vous pouvez l'exécuter en tant que démon à la place en utilisant la commande suivante.
$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html --daemonizeDaemonized GoAccess :78315
Pour arrêter le démon GoAccess, tuez le processus avec la commande suivante.
$ sudo kill -9 78315
Ici, nous utilisons l'ID de processus que nous avons obtenu dans notre commande précédente. Si vous ne vous souvenez pas de l'ID du processus, vous pouvez également utiliser la commande suivante pour tuer le processus.
$ sudo kill -9 `pidof goaccess`
Notez que nous utilisons les guillemets inversés (`) dans notre commande. L'utilisation de guillemets réguliers fera échouer la commande.
Conclusion
Ceci conclut notre didacticiel sur l'installation et l'exécution de GoAccess Log Analyzer sur le serveur Rocky Linux 8. Si vous avez des questions, postez-les dans les commentaires ci-dessous.