70
modifications
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 34 : | Ligne 34 : | ||
<code>goaccess <chemin du fichier> </code> | <code>goaccess <chemin du fichier> </code> | ||
Dans notre cas on peut essayer : | Dans notre cas on peut essayer : | ||
<code >goaccess /var/log/apache2/other_vhosts_access.log</code> | <code >goaccess /var/log/apache2/other_vhosts_access.log</code> | ||
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. | ||
Ligne 44 : | Ligne 46 : | ||
*l'option « --log-format » nécessaire pour préciser le format du fichier journal. | *l'option « --log-format » nécessaire pour préciser le format du fichier journal. | ||
Nous pouvons donc essayer cette commande : | Nous pouvons donc essayer cette commande : | ||
<code >goaccess /var/log/apache2/other_vhosts_access.log -o /var/www/webreport.html --log-format=VCOMBINED</code> | <code >goaccess /var/log/apache2/other_vhosts_access.log -o /var/www/webreport.html --log-format=VCOMBINED</code> | ||
Le fichier webreport.html devrait maintenant être consultable via le navigateur. | Le fichier webreport.html devrait maintenant être consultable via le navigateur. | ||
Ligne 52 : | Ligne 56 : | ||
*l'option « --daemonize » | *l'option « --daemonize » | ||
On obtient donc la commande suivante : | On obtient donc la commande suivante : | ||
<code>goaccess /var/log/apache2/other_vhosts_access.log -o /var/www/webreport.html --log-format=VCOMBINED --real-time-html --daemonize</code> | <code>goaccess /var/log/apache2/other_vhosts_access.log -o /var/www/webreport.html --log-format=VCOMBINED --real-time-html --daemonize</code> | ||
Si la commande fonctionne, on obtient en sortie le PID du démon goaccess. Le fichier /var/www/webreport.html relate maintenant l'activité du site en direct. Pour arrêter le démon il faut employer la commande : | Si la commande fonctionne, on obtient en sortie le PID du démon goaccess. Le fichier /var/www/webreport.html relate maintenant l'activité du site en direct. Pour arrêter le démon il faut employer la commande : | ||
<code>sudo kill -9 <PID></code> | <code>sudo kill -9 <PID></code> | ||
Ligne 62 : | Ligne 69 : | ||
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 : | ||
<code>#!/bin/sh</code> | <code>#!/bin/sh</code> | ||
qui définit le script qui suit comme script Shell. | qui définit le script qui suit comme script Shell. | ||
La deuxième ligne contient le chemin complet du script là où ira le chercher le système au démarrage. Nous appellerons ce script goaccessd.sh et son chemin final sera /etc/systemd/system. | La deuxième ligne contient le chemin complet du script là où ira le chercher le système au démarrage. Nous appellerons ce script goaccessd.sh et son chemin final sera /etc/systemd/system. | ||
La seconde ligne est donc : | La seconde ligne est donc : | ||
<code># /etc/systemd/system/goaccessd.sh </code> | <code># /etc/systemd/system/goaccessd.sh </code> | ||
Les lignes suivantes contiennent l'en-tête LSB qu'il faut paramétrer : | Les lignes suivantes contiennent l'en-tête LSB qu'il faut paramétrer : | ||
<code> | <code> | ||
### BEGIN INIT INFO | ### BEGIN INIT INFO | ||
Ligne 79 : | Ligne 91 : | ||
### END INIT INFO | ### END INIT INFO | ||
</code> | </code> | ||
Explication de chaque ligne : | Explication de chaque ligne : | ||
*### BEGIN INIT INFO marque le début de l'en tête, ### END INIT INFO marque la fin de l'en-tête et chaque ligne commence par un #. | *### BEGIN INIT INFO marque le début de l'en tête, ### END INIT INFO marque la fin de l'en-tête et chaque ligne commence par un #. | ||
Ligne 87 : | Ligne 100 : | ||
*Default-Stop : les runlevel lors desquels le service doit être éteint. | *Default-Stop : les runlevel lors desquels le service doit être éteint. | ||
Nous pouvons maintenant passer à la dernière étape du script : la ligne de commande à lancer. Pour lancer le démon et pour une analyse en temps réel du fichier journal other_vhosts_access.log la commande est : | Nous pouvons maintenant passer à la dernière étape du script : la ligne de commande à lancer. Pour lancer le démon et pour une analyse en temps réel du fichier journal other_vhosts_access.log la commande est : | ||
<code> /bin/goaccess /var/log/apache2/other_vhosts_access .log -a -o /var/www/webreport.html --log-format=COMBINED --real-time-html --daemonize </code> | <code> /bin/goaccess /var/log/apache2/other_vhosts_access .log -a -o /var/www/webreport.html --log-format=COMBINED --real-time-html --daemonize </code> | ||
(On peut ajouter l'option « -a » qui permet d'afficher les agents utilisés par les clients) | (On peut ajouter l'option « -a » qui permet d'afficher les agents utilisés par les clients) | ||
Une fois enregistré il faut rendre le script exécutable avec la commande : | Une fois enregistré il faut rendre le script exécutable avec la commande : | ||
<code >sudo chmod +x goaccessd.sh</code> | <code >sudo chmod +x goaccessd.sh</code> | ||
On peut essayer le script par la commande : | On peut essayer le script par la commande : | ||
<code>./goaccessd.sh</code> | <code>./goaccessd.sh</code> | ||
Si elle fonctionne elle renvoie le PID du démon qu'on termine avec la commande : | Si elle fonctionne elle renvoie le PID du démon qu'on termine avec la commande : | ||
<code >sudo kill -9 <PID> </code> | <code >sudo kill -9 <PID> </code> | ||
Ligne 113 : | Ligne 134 : | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
</code> | </code> | ||
====La section [Unit] ==== | ====La section [Unit] ==== | ||
*Description : fournit une description du service | *Description : fournit une description du service | ||
Ligne 125 : | Ligne 147 : | ||
*WantedBy: Argument obligatoire qui désigne une cible de la séquence de démarrage. "multi-user.target" correspond à un runlevel de 2,3 ou 4. | *WantedBy: Argument obligatoire qui désigne une cible de la séquence de démarrage. "multi-user.target" correspond à un runlevel de 2,3 ou 4. | ||
Pour plus d'explication on peut se référer au manuel : | 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> | ||
Ceci créé un lien symbolique à partir de la copie du fichier de service du système (généralement dans /lib/systemd/system ou /etc/systemd/system) à l'emplacement du disque où systemd cherche les fichiers de démarrage automatique. | Ceci créé un lien symbolique à partir de la copie du fichier de service du système (généralement dans /lib/systemd/system ou /etc/systemd/system) à l'emplacement du disque où systemd cherche les fichiers de démarrage automatique. | ||
Il faut aussi recharger la configuration des démons : | Il faut aussi recharger la configuration des démons : | ||
<code >sudo systemctl daemon-reload </code> | <code >sudo systemctl daemon-reload </code> | ||
Nous pouvons alors vérifier si le service se lance bien au démarrage en redémarrant la machine : | Nous pouvons alors vérifier si le service se lance bien au démarrage en redémarrant la machine : | ||
<code >sudo systemctl reboot </code> | <code >sudo systemctl reboot </code> | ||
La machine redémarrée, vérifions si le service a démarrer correctement. Pour afficher les informations sur notre service la commande est : | La machine redémarrée, vérifions si le service a démarrer correctement. Pour afficher les informations sur notre service la commande est : | ||
<code > sudo systemctl status goaccess.sh.service</code> | <code > sudo systemctl status goaccess.sh.service</code> | ||
Consternation ! On obtient un message d'erreur ! | Consternation ! On obtient un message d'erreur ! | ||
<code>Active : failed</code> | <code>Active : failed</code> | ||
et | et | ||
<code>goaccessd.sh.service: Failed with result 'exit-code'</code> | <code>goaccessd.sh.service: Failed with result 'exit-code'</code> | ||
Cependant systemd nous indique la cause de l'erreur : la variable d'environnement « HOME » ne semble pas définie. (On sort de la commande avec la touche Q) | Cependant systemd nous indique la cause de l'erreur : la variable d'environnement « HOME » ne semble pas définie. (On sort de la commande avec la touche Q) | ||
On peut regarder aussi si le processus goaccess est lancé avec la commande : | On peut regarder aussi si le processus goaccess est lancé avec la commande : | ||
<code >ps -aux | goaccess </code> | <code >ps -aux | goaccess </code> | ||
Là il n'apparaît que la ligne de la commande « grep goaccess ». Le service a bel et bien échoué son démarrage mais nous avons une piste pour la cause de l'erreur. Quelques recherches plus tard sur Internet nous apprennent à ce sujet qu'il s'agit d'un bug du programme. On peut facilement le corriger en initialisant la variable d'environnement HOME dans notre script. On édite donc le fichier /etc/systemd/system/goaccess.sh et, entre l'entête LSB et la ligne de commande nous insérons cette ligne : | Là il n'apparaît que la ligne de la commande « grep goaccess ». Le service a bel et bien échoué son démarrage mais nous avons une piste pour la cause de l'erreur. Quelques recherches plus tard sur Internet nous apprennent à ce sujet qu'il s'agit d'un bug du programme. On peut facilement le corriger en initialisant la variable d'environnement HOME dans notre script. On édite donc le fichier /etc/systemd/system/goaccess.sh et, entre l'entête LSB et la ligne de commande nous insérons cette ligne : | ||
<code>export $HOME=/home</code> | <code>export $HOME=/home</code> | ||
A ce stade voilà notre script goaccess.sh : | A ce stade voilà notre script goaccess.sh : | ||
<code> | <code> | ||
#! /bin/sh | #! /bin/sh | ||
Ligne 163 : | Ligne 201 : | ||
/bin/goaccess /var/log/apache2/other_vhosts_access .log -a -o /var/www/webreport.html --log-format=VCOMBINED --real-time-html –daemonize | /bin/goaccess /var/log/apache2/other_vhosts_access .log -a -o /var/www/webreport.html --log-format=VCOMBINED --real-time-html –daemonize | ||
</code> | </code> | ||
Une fois le script corrigé, essayons à nouveau de rebooter : | Une fois le script corrigé, essayons à nouveau de rebooter : | ||
</code >sudo systemctl reboot</code> | </code >sudo systemctl reboot</code> | ||
Le système redémarre | Le système redémarre | ||
Là nous réessayons les commandes de vérification précédentes : | Là nous réessayons les commandes de vérification précédentes : | ||
<code >sudo systemctl status goaccess.sh.service </code> | <code >sudo systemctl status goaccess.sh.service </code> | ||
Satisfaction ! Le service semble s'être lancé convenablement : | Satisfaction ! Le service semble s'être lancé convenablement : | ||
<code>Active:active</code> | <code>Active:active</code> | ||
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> ». | ||
Ligne 179 : | Ligne 225 : | ||
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 : | ||
<code>#!/bin/sh</code> | <code>#!/bin/sh</code> | ||
Il faut maintenant écrire la ligne de commande de lancement de goaccess. Le fichier à lire est /var/log/apache2/ other_vhosts_access_log.1 . Nous nommerons le fichier html à écrire « yesterdaywebreport.html ». Pour que la ligne de commande ne renvoie ni information ni erreur, nous pouvons rediriger la sortie de la commande avec « > /dev/null 2>&1 ». Ce qui donne : | Il faut maintenant écrire la ligne de commande de lancement de goaccess. Le fichier à lire est /var/log/apache2/ other_vhosts_access_log.1 . Nous nommerons le fichier html à écrire « yesterdaywebreport.html ». Pour que la ligne de commande ne renvoie ni information ni erreur, nous pouvons rediriger la sortie de la commande avec « > /dev/null 2>&1 ». Ce qui donne : | ||
<code>/bin/goaccess /var/log/apache2/ other_vhosts_access_log.1 -a -o /var/www/yesterdaywebreport.html --log-format=VCOMBINED > /dev/null 2>&1 </code> | <code>/bin/goaccess /var/log/apache2/ other_vhosts_access_log.1 -a -o /var/www/yesterdaywebreport.html --log-format=VCOMBINED > /dev/null 2>&1 </code> | ||
une fois la commande lancée et traitée nous pouvons sortir du script proprement avec la commande : | une fois la commande lancée et traitée nous pouvons sortir du script proprement avec la commande : | ||
<code>exit 0</code> | <code>exit 0</code> | ||
Notre script qui contient 3 lignes est presque prêt, il faut le rendre exécutable avec la commande : | Notre script qui contient 3 lignes est presque prêt, il faut le rendre exécutable avec la commande : | ||
<code >sudo chmod +x script.sh</code> | <code >sudo chmod +x script.sh</code> | ||
Si on exécute le script : | Si on exécute le script : | ||
<code >sudo ./goaccess2.sh</code> | <code >sudo ./goaccess2.sh</code> | ||
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> | ||
Remarque à propos de l'ordre d'exécution dans cron.daily : il est possible dans ce dossier de nommer les scripts de façon à gérer leur ordre d'exécution. Cette ordre dépend d'un indice entre 00 et 99 en début du nom du script. Par exemple le script 00logwatch.sh s'exécutera avant le script 10goaccess. Cependant dans le cas présent il n'est normalement pas nécessaire de s'occuper du moment d'exécution du script goaccess2.sh. | Remarque à propos de l'ordre d'exécution dans cron.daily : il est possible dans ce dossier de nommer les scripts de façon à gérer leur ordre d'exécution. Cette ordre dépend d'un indice entre 00 et 99 en début du nom du script. Par exemple le script 00logwatch.sh s'exécutera avant le script 10goaccess. Cependant dans le cas présent il n'est normalement pas nécessaire de s'occuper du moment d'exécution du script goaccess2.sh. | ||
Ligne 209 : | Ligne 267 : | ||
. | . | ||
Exemple : activer les formats Combined, Vcombined, Common et Vcommon par défaut. | Exemple : activer les formats Combined, Vcombined, Common et Vcommon par défaut. | ||
<code> | <code> | ||
###################################### | ###################################### | ||
Ligne 277 : | Ligne 336 : | ||
###################################### | ###################################### | ||
</code> | </code> | ||
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é. | ||
Ligne 282 : | Ligne 342 : | ||
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 » : | ||
<code> | <code> | ||
###################################### | ###################################### | ||
Ligne 311 : | Ligne 372 : | ||
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 | ||
Editer ce fichier qui contient une ligne : | Editer ce fichier qui contient une ligne : | ||
<code>log-format COMBINED</code> | <code>log-format COMBINED</code> | ||
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. | ||
modifications