Chinese (People's Republic of China)  English  Français


Supinfo-Projects.com
Tous les projets des élèves ingénieurs de Supinfo



Projets
  Dernier Projet
  Les plus populaires
  Tous les Projets

253 Visiteurs
3168 Projets


My Supinfo-Projects

   Connectez-vous
   Créez un Compte


Synopsis

   35 Visites
   Note INTERNET : 17.3
    (3 Votants)
   4 Commentaires

   Lire l'article

Evaluez cet article

20
18
16
14
12
10
8
6
4
2
0


Commentez cet article

Auteur :

Email :

Votre commentaire :



 
2005 - Note de Synthèse Stage
Centraliser ses logs avec Syslog-ng
[30 mn de lecture - paru le 10/7/2005 11:11:11 AM - Public : Débutant]

Auteur

PoppuFlavien SALSMANN
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2007

   Lui écrire
   Tous les projets de cet auteur
   Le mini-CV de cet auteur

5 Intégration mySQL-PHP avec Php-Syslog-NG

Enregistrer les logs de plusieurs systèmes, c'est bien, s'y retrouver à travers une interface claire et conviviale, c'est mieux. A ce titre, il nous semble judicieux d'installer le système Php-syslog-NG. Ce module permet d'afficher les logs reçus grâce aux entrées d'un serveur mySQL, et de les trier comme bon nous semble. Il est donc complètement indispensable pour l'administrateur.

5.1 Installation des serveurs

Il faut avant tout installer le serveur de base de données mySQL afin de stocker les différents logs reçus par syslog-ng, ainsi que le serveur Apache permettant d'intepréter les pages écrites en php.

Installation du serveur mySQL et initialisation du compte root

# apt-get mysql-server-5.0
# mysql -u root
mysql> USE mysql;
mysql> UPDATE user
    -> SET password = PASSWORD('motdepass')
   -> WHERE user = 'root';
mysql> flush privileges;
mysql> exit ;

Vous pouvez vérifier si votre serveur mySQL en vous connectant dessus via la commande « mysql -u root –p motdepass ». Si vous utilisez une autre machine pour stocker votre base mySQL, n’oubliez pas d’installer un client mySQL sur votre serveur syslog-ng.

Installation du client mySQL

# apt-get install mysql-client

Enfin, autorisez la machine à pouvoir accéder à votre serveur mySQL sur celui-ci.

Installation du serveur apache2 et de sa documentation

$ apt-get install apache2
$ apt-get install apache2-doc ;

Vous pouvez vérifier si votre serveur Apache marche convenablement en consultant l’adresse http://localhost/ sur votre browser préféré. Vous devez à présenter installer les librairies php ainsi que le module phpmyadmin permettant de gérer simplement votre serveur mySQL.

Installation de PHP et de phpmyadmin

# apt-get install libapache2-mod-php4 php4-mysql 
# apt-get install php4-gd php4-cli
# apt-get install phpmyadmin

Vérifier tout marche convenablement en vous connectant sur http://localhost/phpmyadmin avec votre browser.

5.2 Synchronisation mySQL

Il faut maintenant intégrer le SGBD mySQL à ce système de logs. Pour cela vous allez devoir créer un fichier fifo, remplir celui-ci avec vos requêtes SQL, puis l’exécuter via mySQL. Il faudra penser à l’exécuter continuellement ainsi qu’à sauver la base mySQL.

Commençons par créer la table mySQL contenant les logs

CREATE TABLE logs (
host varchar(32) default NULL,
facility varchar(10) default NULL,
priority varchar(10) default NULL,
level varchar(10) default NULL,
tag varchar(10) default NULL,
datetime datetime default NULL,
program varchar(15) default NULL,
msg text,
seq bigint(20) unsigned NOT NULL auto_increment,
PRIMARY KEY (seq), KEY host (host),
KEY program (program), KEY datetime (datetime),
KEY priority (priority), KEY facility (facility)
) TYPE=MyISAM;

Création du fichier fifo contenant les requêtes temporaires d'insertion

$mkfifo /var/log/mysql.pipe

Construction de la requête SQL dans /etc/syslog-ng/syslog-ng.conf

# On place dans le fichier fifo les requêtes mySQL

destination d_tomysql { pipe("/var/log/mysql.pipe" \
template("INSERT INTO logs (host, facility, priority,\
level, tag, datetime, program, msg) VALUES ( '$HOST',\
'$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', \
'$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC','$PROGRAM','$MSG'\
);\n")

template-escape(yes)); };

Création d’un fichier Bash syslog_mysql.sh permettant d’exécuter les requêtes

#! /bin/bash
if [ ! -e /var/log/mysql.pipe ]; then
        mkfifo /var/log/mysql.pipe
fi
        while  [ -e /var/log/mysql.pipe ]
        do
        if [ ! -e /var/run/syslog-ng.pid ] ; then
               exit 1;
        fi
        syslogstate=`ps -p $1 --no-heading | \
sed "s/[^0-9]//g" `;
        if [ -z $syslogstate ] ; then
               exit 1;
        fi
        mysql -h ip -u user --password=pass ipbase \
< /var/log/mysql.pipe
done

Etant donné que ce fichier Bash s'exécutera continuellement, il est préférable de le lancer en tant que tâche de fond au démarrage du système, comme nous avons pu le voir dans le premier chapitre lors de l'édition du script de démarrage de syslog-ng /etc/init.d/syslog-ng.

Ici, si le serveur mySQL tombe, ou que ses tables sont corrompues, on pourrait perdre l’ensemble de la base de logs. Il est donc préférable de sauver la table des logs régulièrement.

Script de sauvegarde backup_syslog.sh

#!/bin/bash
# Soyez sur d’avoir un mask 600 sur /var/log/backup
/usr/bin/mysqlhotcopy --user=user –password=pass \
--allowold syslog /var/log/backup

Votre Syslog-ng est maintenant relié à votre SGBD mySQL. Vous pourrez plus facilement faire le tri parmi ceux-ci et les visualiser avec un outil tel que mySQL Front sous Windows. Cependant, ces outils ne sont pas vraiment appropriés pour ce que nous voulons : avoir un affichage clair et conci de nos logs. A ce titre, il semble intéressant de nous intéresser à l'interface web offerte par php-syslog-ng.

5.3 Installation et configuration de Php-syslog-NG.

Télécharger l'archive sur :
http://www.phpwizardry.com/php-syslog-ng/phpsyslogng-2.8.tar.gz

Installation de php-syslog-ng

$ tar -xvzf phpsyslogng-2.8.tar.gz \
/var/www/localhost/htdocs/php-syslog-ng
# chown -R apache:apache \
/var/www/localhost/htdocs/php-syslog-ng

Editez le fichier config/config.php afin de préciser la base mySQL, l'utilisateur, etc...

Vous n'avez plus qu'à tester votre nouveau système de logs en allant sur http://localhost/php-syslog-ng/ avec votre browser.

phpsys1.png

phpsys2.png

Voila, votre application Syslog-ng est fonctionnelle et n’a plus qu’à être personnalisée.

Note : Si vous souhaitez arrêter le service syslog-ng, stopper-le absolument à l’aide du script se trouvant dans init.d, comme ceci :

# /etc/init.d/syslog-ng stop

En effet, si vous utilisez la simple commande « syslog-ng stop », le service ne s’arrêtera pas, et il restera des processus inutiles consommant des ressources CPU inutilement.

Votre interface est à présent opérationnelle, ainsi que l'ensemble de votre système Syslog-NG. Afin de clore ce dossier, il semblerait judicieux d'écrire un script Perl permettant d'envoyer un email de notification, au cas où un log suspect venait à arriver, à l'image d'une authentification ratée, où de l'arrêt d'un daemon critique , comme Bind.



Articles de la même catégorie

 Pages : Top


17 Visites
0 Commentaires
Bien choisir son serveur en entreprise
[20 mn de lecture - paru le 10/6/2005 1:55:28 PM - Public : Débutant]

En savoir plus


15 Visites
0 Commentaires
Developing a SARL
[10 mn de lecture - paru le 10/5/2005 12:35:32 PM - Public : Débutant]

En savoir plus


50 Visites
0 Commentaires
Fonctionnalités de Mac os X 10.4 Server
[20 mn de lecture - paru le 10/4/2005 11:41:47 PM - Public : Confirmé]

En savoir plus

   Tous les Articles


SUPINFO Training Center peut vous proposer une formation système ...

   Devenez Ingénieur Système Microsoft en 35 jours avec SUPINFO Training Center
   Devenez Administrateur Système Microsoft avec SUPINFO Training Center


Powered by Campus-Booster Technology
Conditions d'utilisation & Copyright | Respect de la vie privée
© Copyright 1965-2006 Supinfo Paris, Paris Academy of Computer Science
Supinfo, Ecole Supérieure d'Informatique et Paris Academy Of Computer Science are trade marks.
23, rue de Château LANDON - 75010 PARIS - Phone : +33 (0) 153359 700 Fax : +33 (0) 153359 701

Web site autided by :