Вы находитесь на странице: 1из 11

INSTALLATION ET CONFIGURATION

SERVEUR RSYSLOG
Table des matières
1. Préambule ............................................................................................................................................. 2
2. Pré-requis .............................................................................................................................................. 2
3. Installation et configuration du serveur ................................................................................................ 3
3.1. Installation ......................................................................................................................................... 3
3.1.1. Rsyslog ........................................................................................................................................... 3
3.1.2. php-syslog-ng ................................................................................................................................ 3
3.2. Configuration ..................................................................................................................................... 4
3.2.1. Déviation vers une base de données mysql .................................................................................. 4
4. Installation et configuration du client ................................................................................................... 6
4.1. Machine cliente Linux........................................................................................................................ 6
4.2. Machine cliente Windows ................................................................................................................. 6
4.3. Périphériques réseaux ....................................................................................................................... 7
5. Tests de la configuration ....................................................................................................................... 7
6. Pour aller plus loin ................................................................................................................................. 7
6.1. Mise en place de filtres ..................................................................................................................... 7
6.2. Utilisation de TCP comme méthode d'échange ................................................................................ 8
6.3. Mise en place de rotation des logs.................................................................................................... 9
7. Sources ................................................................................................................................................ 11
1. Préambule

Rsyslog est un serveur de journalisation vous permettant de centraliser l'ensemble de


vos journaux sur un serveur afin de les rendre consultables plus confortablement ainsi que
d'effectuer des opérations de tri, supervision, classement.

rsyslog fonctionne en 2 partie. Un serveur ainsi qu'un client. Le client peut-être soit à
installer manuellement soit déjà implémenté dans certains systèmes tel que les routeurs,
téléphones IP et autres périphériques réseaux.

Dans ce tutoriel nous installerons rsyslog ainsi que php-syslog-ng qui va nous permettre
d'obtenir une interface de gestion de nos logs qui seront stockés dans une base de données
MySql

2. Pré-requis

Voici la liste des éléments nécessaires dans ce tutoriel

- 1 Serveur Linux (debian Squeeze dans le cadre ce tutoriel) avec un LAMP fonctionnel

- 1 machine Linux cliente

- 1 Périphérique réseau avec syslog d'implémenté (un téléphone IP dans le cadre de ce


tutoriel)

2|Page

http://www.webprk.net
3. Installation et configuration du serveur

3.1. Installation

3.1.1.Rsyslog

sudo aptitude install rsyslog rsyslog-mysql

3.1.2. php-syslog-ng

Afin d'installer php-syslog-ng récupérez le package à l'adresse suivante


(http://www.webprk.net/index.php?tgt=scr) puis décompresser la tarball dans le répertoire
web de votre apache2 (par défaut : /var/www/).

Créez une base de données au préalable dans Mysql qui sera dédié à php-syslog-ng

Une fois décompressé, ouvrez votre navigateur web pour passer à l'installation de php-
syslog-ng en vous plaçant dans le répertoire http://[ip_de_votre_serveur]/html/install/

Suivez les étapes de l'installation. Aucune particularité n'est à signaler dans ce processus.
N'oubliez pas comme indiqué dans la dernière étape de l'installation de supprimer le répertoire
install.

3|Page

http://www.webprk.net
3.2. Configuration

La configuration de base du serveur est assez simple. Editez le fichier /etc/rsyslog.conf :

Supprimez les commentaires sur les entrées suivantes afin de permettre la réception de syslog
via le protocole TCP et UDP.

#provide UDP syslog reception


$ModLoad imudp
$UDPServerRun 514

# provide TCP syslog reception


$ModLoad imtcp
$InputTCPServerRun 514

Votre serveur est désormais prêt à recevoir des paquets syslog via le port TCP/UDP 514.

Nous activerons ces 2 protocoles car en fonction de l'implémentation de syslog, il ne vous sera
pas toujours possible de recourir au protocole TCP.

3.2.1. Déviation vers une base de données mysql

Nous allons maintenant nous attaquer au plus intéressant. La déviation des logs
récupérés dans la base de données Mysql de php-syslogg-ng.

Pour se faire, rsyslog offre un système de template que l'on peut enclencher dès lors
qu'un log correspond à la règle où vous souhaitez appliquer le template.

Dans un premier temps nous allons éditer le fichier /etc/rsyslog.d/mysql.conf

Supprimez la ligne suivante :

*.* :ommysql:[server],[dbname],[user],[passwd]

Ajoutez le template suivant :

$template syslogNg," insert into


4|Page

http://www.webprk.net
logs(host,facility,priority,level,tag,datetime,program,msg)
VALUES ('%HOSTNAME%', '%syslogfacility-text%',
'%syslogpriority-text%', '%syslogseverity-text%',
'%syslogtag%','%timereported:::date-mysql%','%programname%',
'%msg%')",SQL

Puis on ajoute la règle de déviation en utilisant le template syslogNg :

*.* >[server],[dbname],[user],[password];syslogNg

On redémarre le service syslog

sudo /etc/init.d/rsyslog restart

Vous devriez voir dès à présent des lignes dans votre interface php-syslog-ng. Si ce n'est pas le
cas générez du log en démontant remontant votre carte réseau par exemple :

sudo ifdown eth0


sudo ifup eth0

Si vous n'avez toujours pas de log dans votre base vérifiez bien la syntaxe du template.

(j'ai rencontré beaucoup de soucis mais celui que je vous fourni est fonctionnel. Je préconise
d'insérer le template sur une seule ligne).

Pensez à vous aider des logs ;).

Exemple :

sudo cat /var/log/syslog | grep rsyslog

Vous devriez pouvoir apprendre beaucoup de choses via cette commande.

5|Page

http://www.webprk.net
4. Installation et configuration du client

4.1. Machine cliente Linux

Une fois que votre serveur est prêt nous allons passer à la configuration du client.

Si le fichier /etc/rsyslog.conf n'est pas présent dans votre système installez-le :

sudo aptitude install rsyslog

Editez le fichier /etc/rsyslog.conf puis ajoutez à la fin du fichier :

*.* @[ip_serveur]:[port]

Cette directive va indiquer à rsyslog de forwarder tous les logs qu'il acquiert au serveur
mentionné via le port indiqué.

Il est possible d'appliquer des filtres afin de ne pas tout rediriger. Ce point sera abordé plus loin
dans ce document.

Redémarrez le service rsyslog après avoir enregistré vos modifications.

4.2. Machine cliente Windows

Afin de pouvoir remonter des journaux d'évènement d'un système Windows sur notre
serveur syslog il existe différentes applications. Ayant réellement testé EventReporter mais qui
est toutefois payant, je préfère compléter cette partie plus tard une fois que j'aurais trouvé un
freeware ou un soft openSource pour une tâche équivalente.

Voici toutefois les liens nécessaires que j'ai suivis pour l'installation :

 http://www.eventreporter.com/en/
 http://www.mwagent.com/sub-articles/centralized-logging-in-a-hybrid-environment-
windowslinux-step-3/

6|Page

http://www.webprk.net
4.3. Périphériques réseaux

Concernant les périphériques réseaux, la possibilité d'émettre les logs du matériel


vers un serveur peut varier d'un constructeur à un autre. Toutefois la plupart des routeurs et
téléphones
IP proposent cette fonctionnalité. Les équipements Cisco implémentent eux aussi le
protocole syslog afin de pouvoir centraliser les logs sur un serveur dédié.

5. Tests de la configuration

Afin de tester notre configuration nous allons générer du log à partir de notre machine
cliente pour cela exécutez simplement la commande suivante :

sudo ifdown eth0


sudo ifup eth0

Consultez dès lors vos logs depuis phpsyslog-ng et vérifiez que des logs de votre machine
cliente sont présents.

Si ce n'est pas le cas vérifiez que vous avez bien activé l'écoute des ports sur votre
serveur (point 3) et que votre client est bien configuré (point 4).

6. Pour aller plus loin

6.1. Mise en place de filtres

En enregistrant tous les logs dans votre base de données vous allez vous apercevoir que
le volume va croître très rapidement surtout si votre serveur est la référence de nombreux
périphériques (routeurs, téléphones, serveurs, stations clientes).

La mise en place de filtres permet en plus de réduire le volume de votre base de données
permet aussi de ne remonter à votre serveur que certains types de logs que l'on peut
sélectionner par :

 Type d'application
7|Page

http://www.webprk.net
 Criticité de l'événement

Ainsi il est par exemple possible de remonter uniquement les événements dont la criticité
est supérieure ou égale à un avertissement.

Les événements d'information qui ne sont pas source potentielle de problème ne seront
donc pas remontés.

Il est toutefois recommandé de conserver les journaux d'un système sur un seul système.

Pour plus de détails sur la mise en place de filtres consultez le lien suivant :
http://www.rsyslog.com/doc/rsyslog_conf_filter.html

Voici un exemple simple de mise en place de filtre sur notre prédicat précédent :

*.warn @[ip_de_votre_serveur]

6.2. Utilisation de TCP comme méthode d'échange

Il est possible de modifier dans rsyslog le protocole de communication à utiliser. Par


défaut rsyslog se base sur des échanges en UDP (port 514). Il est toutefois possible de basculer
en TCP.

Il faut veiller au préalable que votre serveur syslog puisse accepter la communication en
TCP. Cette vérification se fait par le biais des directives suivantes dans rsyslog.conf

# provide TCP syslog reception


$ModLoad imtcp
$InputTCPServerRun 514

A ce stade le serveur est opérationnel pour écouter en TCP sur le port défini dans son fichier de
configuration.

Maintenant il faut configurer le client pour qu'il transmette en mode TCP ses paquets :

Editez le fichier /etc/rsyslog.conf :

# rsyslog va forwarder ses logs en UDP


*.* @[ip_serveur]:[port]

8|Page

http://www.webprk.net
# rsyslog va forwarder ses logs en TCP
*.* @@[ip_serveur]:[port]

Il est important de noter que certains périphériques réseaux n’implémentent pas le dialogue en
TCP. Par conséquent il est préférable de toujours écouter le port 514 en UDP.

Si vous souhaitez remonter des journaux depuis des périphériques propriétaires. Si ce n'est pas
le cas et que vous avez la main sur la configuration de syslog vous pouvez le désactiver.

6.3. Mise en place de rotation des logs

Une base de données qui contient des logs de plusieurs système va grossir indéfiniment
c'est indéniable. C'est pourquoi il existe dans le package de php-syslog-ng un script
logrotate.php

Ce script va vous permettre de réaliser une purge de vos données de la base afin de ne
pas altérer les performances de votre base de données.

En fonction de votre utilisation des logs il est peut-être préférable de les sauvegarder
dans un script ou dans une requête SQL avant de les perdre définitivement.

Pour configurer ce script 2 étapes sont nécessaires

9|Page

http://www.webprk.net
Il faut d'abord configurer le fichier config.php de php-syslog-ng situé dans le répertoire config :

define('LOGROTATERETENTION', 90);

Cette directive indique le nombre de jour à partir duquel un enregistrement sera


considéré comme obsolète et sera traité par le script logrotate.php

Une fois votre valeur définie il vous faut planifier le rythme d'exécution du script
logrotate.php

La planification de tâche sous linux s'effectue par le biais du package cron


(http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5 )

Exécuter la commande suivante :

sudo crontab -e

Créer un dossier php-syslog-ng dans /var/log/ pour le stockage de journaux du script

Ajouter la ligne suivante à la fin du fichier cron :

@daily php [chemin_vers_php_syslog_ng]/scripts/logrotate.php >>


/var/log/php-syslog-ng/logrotate.log

@daily find [chemin_vers _php_syslog_ng]/jpcache/ -atime 1 -exec rm -f


'{}' ';'

*/5 * * * * php [chemin_vers_php_syslog_ng]/scripts/reloadcache.php >>


/var/log/php-syslog-ng/reloadcache.log

Expliquons un peu les lignes fraichement ajoutées :

La première ligne exécute de manière journalière le script logrotate.php puis dévie la


sortie (message de retour du script affiché dans le terminal) vers un fichier .log

La seconde a pour vocation de supprimer de manière journalière le cache que génère


php_syslog_ng afin d'accélérer la génération des résultats de vos requêtes.

La dernière exécute un script permettant de générer un nouveau cache aussitôt toutes


les 5 minutes.

10 | P a g e

http://www.webprk.net
Ainsi votre base sera régulièrement purgée afin de ne pas faire croitre sa taille indéfiniment.

7. Sources

- http://wiki.rsyslog.com/index.php/Php-syslog-ng
- http://www.rsyslog.com/doc/manual.html
- http://www.deimos.fr/blocnotesinfo/index.php?title=Php-syslog-
ng_:_Interpr%C3%A9tation_des_logs_Syslog-ng_dans_une_interfa%C3%A7e_web

11 | P a g e

http://www.webprk.net

Вам также может понравиться