70
modifications
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 2 : | Ligne 2 : | ||
----- | ----- | ||
== 1. Introduction == | |||
Goaccess est un analyseur de fichiers journal spécialisé dans les services réseaux et particulièrement adapté à l'analyse du trafic http. Les statistiques sont accessibles en mode console via un terminal ou en mode navigateur web via une page html. Le logiciel supporte la plupart des format log existant. Il est possible de le lancer en mode démon afin d'obtenir des statistiques du trafic de son site web en temps réel. Goaccess nécessite peu de dépendances, prends peu de place sur le disque et peu de ressources système, il est donc adapté à une petite machine. | Goaccess est un analyseur de fichiers journal spécialisé dans les services réseaux et particulièrement adapté à l'analyse du trafic http. Les statistiques sont accessibles en mode console via un terminal ou en mode navigateur web via une page html. Le logiciel supporte la plupart des format log existant. Il est possible de le lancer en mode démon afin d'obtenir des statistiques du trafic de son site web en temps réel. Goaccess nécessite peu de dépendances, prends peu de place sur le disque et peu de ressources système, il est donc adapté à une petite machine. | ||
Dans ce tuto nous allons nous appliquer à configurer Goaccess pour afficher les statistiques de connexions sur un site hébergé avec Apache 2. Dans un premier temps nous allons essayer le mode console, dans un second temps le mode web en instantané et enfin le mode démon pour que goaccess analyse le trafic en temps réel. | Dans ce tuto nous allons nous appliquer à configurer Goaccess pour afficher les statistiques de connexions sur un site hébergé avec Apache 2. Dans un premier temps nous allons essayer le mode console, dans un second temps le mode web en instantané et enfin le mode démon pour que goaccess analyse le trafic en temps réel. | ||
Ligne 8 : | Ligne 8 : | ||
pages man (en anglais): [[http://manpagez.com/man/1/goaccess/]] | pages man (en anglais): [[http://manpagez.com/man/1/goaccess/]] | ||
=== 1.1 prérequis === | |||
Il est possible de l'adapter à une autre distro Linux, cependant l’intérêt de ce tuto est qu'il est spécifiquement écrit pour Débian 11 Bullseyes. | Il est possible de l'adapter à une autre distro Linux, cependant l’intérêt de ce tuto est qu'il est spécifiquement écrit pour Débian 11 Bullseyes. | ||
* Goaccess fonctionne avec AMD64, x86, ARM, etc. | * Goaccess fonctionne avec AMD64, x86, ARM, etc. | ||
Ligne 20 : | Ligne 20 : | ||
* Pour consulter en ligne le fichier html de statistique il faut copier ce dernier dans un dossier configuré pour être mis en ligne, par convention /var/www/ | * Pour consulter en ligne le fichier html de statistique il faut copier ce dernier dans un dossier configuré pour être mis en ligne, par convention /var/www/ | ||
== 2. Installation == | |||
<code >sudo apt install goaccess</code> | <code >sudo apt install goaccess</code> | ||
== 3. Description == | |||
La configuration de Goaccess par défaut se fait dans le fichier /etc/goaccess/goaccess.conf. Lorsqu'on lance la commande simple "goaccess", le programme va chercher les paramètres dont il a besoin dans goaccess.conf. Toutefois, les paramètres passés dans la ligne de commande sont prioritaires sur les paramètres enregistrés dans le fichier goaccess.conf (mis à part le chemin du fichier journal à analyser) | La configuration de Goaccess par défaut se fait dans le fichier /etc/goaccess/goaccess.conf. Lorsqu'on lance la commande simple "goaccess", le programme va chercher les paramètres dont il a besoin dans goaccess.conf. Toutefois, les paramètres passés dans la ligne de commande sont prioritaires sur les paramètres enregistrés dans le fichier goaccess.conf (mis à part le chemin du fichier journal à analyser) | ||
=== 3.1 Essai du mode console === | |||
Avant paramétrages, la commande | Avant paramétrages, la commande | ||
<code >goaccess</code> | <code >goaccess</code> | ||
Ligne 37 : | Ligne 37 : | ||
Il faut alors spécifier le format du log à analyser dans la console. Par défaut ce fichier est au format « combined log format with virtual host » (VCOMBINED). Le programme affiche alors les statistiques numériques d'Apache. Le fichier journal analysé doit contenir de l'activité ; s'il est vide (0 Ko) alors aucune donnée ne remontera et le tableau restera vide aussi. On sort du tableau avec la touche Q. | Il faut alors spécifier le format du log à analyser dans la console. Par défaut ce fichier est au format « combined log format with virtual host » (VCOMBINED). Le programme affiche alors les statistiques numériques d'Apache. Le fichier journal analysé doit contenir de l'activité ; s'il est vide (0 Ko) alors aucune donnée ne remontera et le tableau restera vide aussi. On sort du tableau avec la touche Q. | ||
=== 3.2 Essai du mode web === | |||
La commande goaccess va cette fois nous servir à générer une page web qu'on pourra ensuite consulter avec un navigateur. Faute de paramétrages dans goaccess.conf il nous faut toujours préciser quel fichier journal analyser. Il faut en plus ajouter deux paramètres : | La commande goaccess va cette fois nous servir à générer une page web qu'on pourra ensuite consulter avec un navigateur. Faute de paramétrages dans goaccess.conf il nous faut toujours préciser quel fichier journal analyser. Il faut en plus ajouter deux paramètres : | ||
* le commutateur « -o », pour « output », suivis du chemin complet du fichier html à générer | * le commutateur « -o », pour « output », suivis du chemin complet du fichier html à générer | ||
Ligne 45 : | Ligne 45 : | ||
Le fichier webreport.html devrait maintenant être consultable via le navigateur. | Le fichier webreport.html devrait maintenant être consultable via le navigateur. | ||
=== 3.3 Essai du mode démon=== | |||
Ce mode permet de lancer un démon goaccess en arrière plan qui analyse les connexions en temps réel (real time). Nous allons garder la ligne de commande précédente et lui ajouter deux paramètres qui en fait fonctionnent ensemble: | Ce mode permet de lancer un démon goaccess en arrière plan qui analyse les connexions en temps réel (real time). Nous allons garder la ligne de commande précédente et lui ajouter deux paramètres qui en fait fonctionnent ensemble: | ||
* l'option « --real-time-html » | * l'option « --real-time-html » | ||
Ligne 54 : | Ligne 54 : | ||
<code>sudo kill -9 <PID></code> | <code>sudo kill -9 <PID></code> | ||
== 4. Deux scripts avec goaccess == | |||
=== 4.1 Lancer le démon goaccess au démarrage de Debian pour reporter les statistiques en temps réel === | |||
Il faut respecter 3 étapes. | Il faut respecter 3 étapes. | ||
=== 4.1.1 script LSB (Linux Standard Base) === | ==== 4.1.1 script LSB (Linux Standard Base) ==== | ||
Il s'agit d'un script conçu spécialement pour effectuer des tâches au démarrage de la machine telles que lancer un démon. | Il s'agit d'un script conçu spécialement pour effectuer des tâches au démarrage de la machine telles que lancer un démon. | ||
La première ligne contient cette commande : | La première ligne contient cette commande : | ||
Ligne 95 : | Ligne 95 : | ||
<code >sudo kill -9 <PID> </code> | <code >sudo kill -9 <PID> </code> | ||
=== 4.1.2 Création d'un service === | ==== 4.1.2 Création d'un service ==== | ||
Maintenant que nous avons le script à exécuter nous devons créer un service pour Debian, c'est à dire pour systemd. (bonne doc : [[http://lea-linux.org/documentations/Systemd)]]. Cela consiste à créer un fichier nommé <nom du script>.service dans le dossier /usr/lib/systemd/system/. Créons donc le fichier /usr/lib/systemd/system/goaccessd.sh.service. Ce fichier doit contenir le paramétrage suivant : | Maintenant que nous avons le script à exécuter nous devons créer un service pour Debian, c'est à dire pour systemd. (bonne doc : [[http://lea-linux.org/documentations/Systemd)]]. Cela consiste à créer un fichier nommé <nom du script>.service dans le dossier /usr/lib/systemd/system/. Créons donc le fichier /usr/lib/systemd/system/goaccessd.sh.service. Ce fichier doit contenir le paramétrage suivant : | ||
Ligne 125 : | Ligne 125 : | ||
Pour plus d'explication on peut se référer au manuel : [[https://manpages.debian.org/stretch/systemd/systemd.service.5.en.html]] . | Pour plus d'explication on peut se référer au manuel : [[https://manpages.debian.org/stretch/systemd/systemd.service.5.en.html]] . | ||
=== 4.1.3 Activation du script et autres commandes === | ==== 4.1.3 Activation du script et autres commandes ==== | ||
Maintenant que le service est prêt nous allons l'activer par cette commande : | Maintenant que le service est prêt nous allons l'activer par cette commande : | ||
<code >sudo systemctl enable goaccess.sh.service</code> | <code >sudo systemctl enable goaccess.sh.service</code> | ||
Ligne 171 : | Ligne 171 : | ||
Systemd nous donne diverses informations sur le service lancé. Notons que le champs « Main PID » indique le PID du processus père du démon. Le PID du démon est indiqué deux fois, dans la section « CGroup » et à la fin de la dernière ligne d'information « Daemonized GoAccess <PID> ». | Systemd nous donne diverses informations sur le service lancé. Notons que le champs « Main PID » indique le PID du processus père du démon. Le PID du démon est indiqué deux fois, dans la section « CGroup » et à la fin de la dernière ligne d'information « Daemonized GoAccess <PID> ». | ||
=== 4.2 Lancer goaccess tout les jours pour reporter les statistiques de la veille === | |||
Pour l'instant nous avons travaillé sur le fichier journal other_vhosts_access.log qui reporte l'activité actuelle et récente. Le mode temps réel était adapté à cela. Par le jeu de la rotation des logs (logrotate) Apache consigne des données plus anciennes et exploitables dans le fichier other_vhosts_access_log.1. La rotation des fichiers journaux d'apache est paramétrée dans le fichier /etc/logrotate.d/apache2. La ligne « daily » nous confirme que la rotation des logs est quotidienne. Le fichier other_vhosts_access.log.1 concerne donc les connexions de la veille. Nous allons paramétrer goaccess pour reporter chaque jour les statistiques de ce fichier journal. | Pour l'instant nous avons travaillé sur le fichier journal other_vhosts_access.log qui reporte l'activité actuelle et récente. Le mode temps réel était adapté à cela. Par le jeu de la rotation des logs (logrotate) Apache consigne des données plus anciennes et exploitables dans le fichier other_vhosts_access_log.1. La rotation des fichiers journaux d'apache est paramétrée dans le fichier /etc/logrotate.d/apache2. La ligne « daily » nous confirme que la rotation des logs est quotidienne. Le fichier other_vhosts_access.log.1 concerne donc les connexions de la veille. Nous allons paramétrer goaccess pour reporter chaque jour les statistiques de ce fichier journal. | ||
=== 4.2.1 Écriture du script === | ==== 4.2.1 Écriture du script ==== | ||
Editons le fichier goaccess2.sh | Editons le fichier goaccess2.sh | ||
il s'agit comme précédemment d'un script shell, la première ligne est donc l'en-tête : | il s'agit comme précédemment d'un script shell, la première ligne est donc l'en-tête : | ||
Ligne 188 : | Ligne 188 : | ||
et que la commande se passe bien, alors le fichier yesterdaywebreport.html affiche les statistiques de la veille. | et que la commande se passe bien, alors le fichier yesterdaywebreport.html affiche les statistiques de la veille. | ||
=== 4.2.2 Ajout au cron === | ==== 4.2.2 Ajout au cron ==== | ||
le cron s'occupe des tâches régulières, qu'elles soient quotidiennes, hebdomadaires ou mensuelles. Les scripts à exécuter quotidiennement doivent être présents dans le dossier /etc/cron.daily/. On copie donc notre script vers ce dossier avec la commande : | le cron s'occupe des tâches régulières, qu'elles soient quotidiennes, hebdomadaires ou mensuelles. Les scripts à exécuter quotidiennement doivent être présents dans le dossier /etc/cron.daily/. On copie donc notre script vers ce dossier avec la commande : | ||
<code >sudo cp goaccess2.sh /etc/crondaily/</code> | <code >sudo cp goaccess2.sh /etc/crondaily/</code> | ||
Ligne 195 : | Ligne 195 : | ||
Une page html nommée yesterdaywebreport.html sera générée tout les matins vers 6h25 reprenant les statistiques de la veille contenues dans other_hosts_access.log.1. | Une page html nommée yesterdaywebreport.html sera générée tout les matins vers 6h25 reprenant les statistiques de la veille contenues dans other_hosts_access.log.1. | ||
== 5. Configurations facultatives == | |||
Nous avons pour l'instant fait fonctionné goaccess sans toucher à son fichier de configuration qui est /etc/goaccess/goaccess.conf. Celui-ci permet de paramétrer goaccess plus finement. Les paramètres enregistrés dans le fichier de configuration prennent effet mais les paramètres contradictoires passés dans la ligne de commande sont prioritaires. Une exception toutefois : lorsqu'on définit le champs « log file » dans la section « file options » celui ci prend le pas sur la ligne de commande. Définir ce champs peut être utile si on n'analyse qu'un seul fichier journal, ce qui n'est pas notre cas ; cela permet de se dispenser de préciser le fichier en entré dans la ligne de commande. | Nous avons pour l'instant fait fonctionné goaccess sans toucher à son fichier de configuration qui est /etc/goaccess/goaccess.conf. Celui-ci permet de paramétrer goaccess plus finement. Les paramètres enregistrés dans le fichier de configuration prennent effet mais les paramètres contradictoires passés dans la ligne de commande sont prioritaires. Une exception toutefois : lorsqu'on définit le champs « log file » dans la section « file options » celui ci prend le pas sur la ligne de commande. Définir ce champs peut être utile si on n'analyse qu'un seul fichier journal, ce qui n'est pas notre cas ; cela permet de se dispenser de préciser le fichier en entré dans la ligne de commande. | ||
=== 5.1 Activation des formats de log par défaut === | |||
Si on se sert de goaccess en mode console, une option intéressante peut être d'activer les formats de log dont on peut avoir besoin dans le fichier conf. Ce paramétrage sert à ne pas avoir besoin de spécifier le format de log dans la ligne de commande à l'aide de la directive « log-format », goaccess essaie alors les formats activés dans son fichier de configuration. | Si on se sert de goaccess en mode console, une option intéressante peut être d'activer les formats de log dont on peut avoir besoin dans le fichier conf. Ce paramétrage sert à ne pas avoir besoin de spécifier le format de log dans la ligne de commande à l'aide de la directive « log-format », goaccess essaie alors les formats activés dans son fichier de configuration. | ||
Ligne 277 : | Ligne 277 : | ||
Une fois que ceci est fait, si on omet de préciser le format de log avec la directive « log-format » dans la ligne de commande, goaccess essaie les formats de log activés. Cela peut être tentant d'activer tout les formats mais dans ce cas goaccess met beaucoup plus de temps à effectuer sa tache et prends davantage de ressources. N'activer que le(s) log-format qu'on utilise accroît la rapidité du processus mais risque de renvoyer une erreur si on souhaite analyser un fichier journal rédigés dans un format de log non activé. | Une fois que ceci est fait, si on omet de préciser le format de log avec la directive « log-format » dans la ligne de commande, goaccess essaie les formats de log activés. Cela peut être tentant d'activer tout les formats mais dans ce cas goaccess met beaucoup plus de temps à effectuer sa tache et prends davantage de ressources. N'activer que le(s) log-format qu'on utilise accroît la rapidité du processus mais risque de renvoyer une erreur si on souhaite analyser un fichier journal rédigés dans un format de log non activé. | ||
=== 5.2 Cacher les panneaux inutiles dans la page html === | |||
Par défaut la page html générée par goaccess contient de nombreux panneaux ; certains sont plus utiles que d'autres, cacher les panneaux qu'on juge inutiles accroît de beaucoup la lisibilité des informations. Dans la section « Parse Options » il y a un bloc « ignore-panel » en bas ; il est possible de décommenter des lignes pour ignorer telle ou telle donnée. L'exemple suivant ignore les panneaux « Requests static », « Not Found », « Referreres », « Keaphrases » et « status_codes » : | Par défaut la page html générée par goaccess contient de nombreux panneaux ; certains sont plus utiles que d'autres, cacher les panneaux qu'on juge inutiles accroît de beaucoup la lisibilité des informations. Dans la section « Parse Options » il y a un bloc « ignore-panel » en bas ; il est possible de décommenter des lignes pour ignorer telle ou telle donnée. L'exemple suivant ignore les panneaux « Requests static », « Not Found », « Referreres », « Keaphrases » et « status_codes » : | ||
Ligne 305 : | Ligne 305 : | ||
</code> | </code> | ||
=== 5.3 Changer le format des logs d'Apache === | |||
dans apache il faut éditer le fichier /etc/apache2/conf-available/other-vhost | dans apache il faut éditer le fichier /etc/apache2/conf-available/other-vhost | ||
Ligne 312 : | Ligne 312 : | ||
On peut changer ici le log-format ou, ce qui peut être utile aussi, ajouter un log dans un format différent. | On peut changer ici le log-format ou, ce qui peut être utile aussi, ajouter un log dans un format différent. | ||
== 6. Conclusion == | |||
GoAccess est léger, sans base de données et facile à configurer. Il semble convenir pour surveiller un simple site web. Pour ma part je surveille un site avec peu de trafic à l’intérieure d'un vpn et finalement il ne me sert pas à grand chose. Je regrette l'interface belle mais peu claire. | GoAccess est léger, sans base de données et facile à configurer. Il semble convenir pour surveiller un simple site web. Pour ma part je surveille un site avec peu de trafic à l’intérieure d'un vpn et finalement il ne me sert pas à grand chose. Je regrette l'interface belle mais peu claire. | ||
Remerciement spécial à lol pour la résurrection de mon compte ;) |
modifications