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


(5 votes, Note: 4.6 sur 5) 5 Votes | Average: 4.6 out of 55 Votes | Average: 4.6 out of 55 Votes | Average: 4.6 out of 55 Votes | Average: 4.6 out of 55 Votes | Average: 4.6 out of 5
Loading ... Loading ...
Catégorie: Faq/Tutos
par tms
Nombre de lectures: 0 fois
1 Commentaire
gnl

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.

ccze1.jpg

Voilà c’est tout =) !
Thomas Simon http://equanux.no-ip.org/

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'

Suivit des commentaires: RSS ou TrackBack 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'.

  1. le Samedi 1 sept 2007 a 18:32

    salut Thomas.

    Tres interessant… merci pour l’astuce et la demo ;)

Laisser un commentaire

Vous devez vous identifier pour laisser un commentaire.