Créer facilement un outil de surveillance des logs d’un système GNU/Linux avec affichage des résultats dans une page Web
Samedi, 1 septembre 2007
Ce tutoriel a pour but de mettre en oeuvre rapidement un outil léger sous forme de script pour afficher les logs d’un serveur Apache2 dans une page Web et de manière plus conviviale car elle comportera une mise en page colorée automatique adaptée aux formats des différents logs. Vous pouvez appliquer cette méthode à n’importe quel autre fichier journal à condition d’avoir un serveur Web pour afficher le résultat. Il est également conseillé de protéger l’accès à cette page par un fichier .htaccess et de s’y connecter en HTTPS.
Pré requis:
- Un serveur Web de type Apache2 sous un système Linux
- Un serveur Web SSL comme apache-ssl ou mod_ssl pour Apache2
Le colorant !
Installons le programme qui se charge par une simple ligne de commande de colorer l’affichage des logs en mode console.
apt-get install cczeNous allons écrire un petit script pour coupler ccze à l’utilitaire tail avec l’option -f, qui permet d’afficher la fin d’un fichier texte en actualisant l’affichahe de l’écriture dans ce fichier en temps réel.
Le script:
Nous placerons le script final dans /usr/local/bin et ses résultats dans /var/www/log/.
mkdir /var/www/log
nano /usr/local/bin/www.log.sh # /votre/répertoire/votre-script.sh
#!
#/bin/sh
PATH=/usr/local/bin
/usr/bin/tail -f /var/log/apache2/access.log | /usr/bin/ccze -h > /var/www/log/apache2.access.log.html
Copions ensuite le script dans /usr/local/bin et ajoutons les permissions d’exécution.
cp /votre/répertoire/www.log.sh /usr/local/bin/www.log.sh && chmod +x /usr/local/bin/www.log.sh
Répétez cette méthode aux différents fichiers log que vous souhaitez visualiser tels que /var/log/auth.log, /var/log/apache2/error.log etc…
Automatisation dans /etc/crontab
Il nous faut ensuite automatiser la tâche afin de ne pas pas avoir à lancer le script pour mettre à jour les pages Web.
On commence par sauvegarder la crontab originale.
cp /etc/crontab /etc/crontab.backup
Puis on l’édite. Vous devriez, en fonction de la distribution utilisée et de sa version, trouver quelque chose d’approchant :
nano /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*/59 * * * * root /usr/local/bin/www.log.sh
*/59 * * * * root /usr/local/bin/votre-script.sh
*/59 * * * * * Signifie que cron lancera cette commande toutes les 59 minutes, tout les jours de tout les mois tout les ans =)
Ceci permettra de mettre à jour la page Web toutes les heures afin qu’elle ne mesure pas très vite 10 mètres long !
Si vous avez crée le script avec des droits root tout à l’heure, faites suivre l’argument root comme nom d’utilisateur sinon, utilisez votre nom d’ utilisateur. Relançons cron pour qu’il prenne en compte la nouvelle crontab.
/etc/init.d/cron reload
Sous Debian, bien sûr =)
Sécuriser le répertoire de travail du script
Si vous n’avez jamais créer d’utilisateur avec htpasswd :
htpasswd -c /apache2/.htpassword nom_utilisateur nouveau_password
Il faut ensuite créer un fichier .htaccess dans /var/www/log/ :
nano /var/www/log/.htaccess
AuthUserFile /etc/apache2/.htpassword
AuthName "Authentification Requise" # éviter tout accent
AuthType Basic
Require user nom_utilisateur
Ceci fait, il ne nous reste plus qu’à nous connecter sur le serveur Apache en https, s’authentifier et votre navigateur fera le reste du travail à chaque fois qu’il rafraîchira la page, vous verez s’afficher les nouvelles écritures dans le fichier de log. Un petit plus que vous soyez sous Windows ou Linux pour consulter les logs de votre serveur, vous pouvez utiliser la dernière version d’opéra. Vous pourrez ainsi configurer la fréquence d’actualisation de la page à 30 seconde par exemple.
Voilà c’est tout =) !
Thomas Simon http://equanux.no-ip.org/
Publié par tms | Un commentaire
1 commentaire sur 'Créer facilement un outil de surveillance des logs d’un système GNU/Linux avec affichage des résultats dans une page Web'
Laisser un commentaire
Vous devez vous identifier pour laisser un commentaire.




le Samedi 1 sept 2007 a 18:32
salut Thomas.
Tres interessant… merci pour l’astuce et la demo