System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

Installation et Configuration de Syslog-ng

Tutoriel sur php-syslog-ng, syslog-ng et mysql.

Si vous cherchez une solution pour remonter les logs d'une ou plusieurs machines dans une interface web vous êtes au bon endroit :)

Paquet utilisé :

  • eventlog-0.2.7-1.el5.x86_64.rpm -> support library
  • syslog-ng-2.1.3-1.el5.x86_64.rpm -> centraliseur de journaux
  • php-syslog-ng-2.9.8f.tgz -> Interface web de remonté de logs

Biensur il vous faut un serveur Mysql fonctionnel si ce n'est pas le cas : cliquez ici

Installation :

Redhat & centos :

Vous trouverez ces deux rpms dans le repository rpmfind

  • eventlog-0.2.7-1.el5.x86_64.rpm
  • syslog-ng-2.1.3-1.el5.x86_64.rpm
rpm -Uvh eventlog puis syslog-ng

Debian & Ubuntu :

aptitude install syslog-ng qui vous installera aussi libevtlog.

Installation :

Tout d'abord télécharger php-syslog-ng ici : http://code.google.com/p/php-syslog-ng/downloads/list

Désarchiver php-syslog-ng-2.9.8f.tgz dans votre htdocs (DocumentRoot)

exemple : /opt/httpd/htdocs/ ou /var/www/ pour une Debian ou une Ubuntu

tar xvzf php-syslog-ng-2.9.8f.tgz

Deux fichiers à modifier pour cause de bug :

Remplacer le contenu de : sample_data.sql (le soucis de l'original c'est qu'il y a plus de valeur que de tables)

Ce fichier est ici : /opt/httpd/htdocs/php-syslog-ng/html/install/sql/

mv sample_data.sql sample_data.sql.orig
vi /opt/httpd/htdocs/php-syslog-ng/html/install/sql/sample_data.sql

Par ceci :

INSERT INTO `logs` (host, facility, priority, level, tag, datetime, program, msg, counter) VALUES ('srv-www-001','daemon','warning','alert','Tag','2006-06-15
 22:25:32','Test Script','%AAA-3-IPILLEGALMSG: Fan 1 had a rotation error reported.',1),('as-3550-2','kern','info','alert','Tag','2006-06-15 22:25:34','Test
Script','Duplicate address 10.10.2.2 on Vlan20',2),('as-3550-2','mail','warning','crit','Tag','2006-06-15 22:25:36','Test Script','Line protocol on Interface
 FastEthernet0/7, changed state to up',3);
INSERT INTO `search_cache` VALUES ('logs','HOST','as-3550-2','2006-06-15 18:25:54'),('logs','HOST','srv-www-001','2006-06-15 18:25:54'),('logs','FACILITY','d
aemon','2006-06-15 18:25:54'),('logs','FACILITY','kern','2006-06-15 18:25:54'),('logs','FACILITY','mail','2006-06-15 18:25:54');

Attention aux sauts de ligne !

Pour la deuxième modification elle se fait à la fin si vous avez des problèmes pour accéder à votre php-syslog avec votre navigateur :

Si dessous bien mettre la suite de votre htdocs, exemple : /opt/httpd/htdocs/php-syslog-ng/html/

Fichier : /opt/httpd/htdocs/php-syslog-ng/html/config/config.php

define('SITEURL', '/php-syslog-ng/html/');

Syslog-ng :

Important !!! : Utiliser le fichier syslog-ng.conf fournit par php-syslog-ng.

il se trouve ici : /opt/httpd/htdocs/php-syslog-ng/scripts/syslog-ng.conf

Et mettez le dans /etc/syslog-ng/

Une petite chose à modifier dedans :

destination d_mysql {
    program("/opt/mysql/bin/mysql -u syslogadmin --password=password syslog -B > /dev/null"
    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));
    };

Note :

Première chose le mot de passe apparaît en clair :

# ps -ef | grep syslog
root      1070     1  0 09:50 pts/0    00:00:00 /bin/sh -c /opt/mysql/bin/mysql -u syslogadmin --password=password syslog -B > /dev/null

Deuxième chose :

Vous risquez de rencontrer cette erreur sur php-syslog-ng :

srvtest   syslog   09:41:01 	syslog-ng 	syslog-ng[1071]: Error opening file for writing; filename='/dev/xconsole', error='No such file or directory (2)'

Pour la résoudre :

mkfifo /dev/xconsole
chown root:tty /dev/xconsole
chmod 640 /dev/xconsole

Troisième chose :

Syslog écoute sur le port udp 514

Ensuite vous n'avez plus qu'a vous rendre à l'url que vous avez choisi avec votre navigateur préféré qui est biensur Firefox non ? Oo

Par GanGan | le mardi, février 3 2009 08:05

Commentaires

1. marieG

jeudi, novembre 19 2009 | 12:22

Bonjour,

J'ai installé php-syslog-ng, tout marche bien . Mais j'ai une petite exigence supplémentaire : j'aimerai que les 'hosts' n'apparaissent plus avec des adresses ip mais avec des noms que je leur ai donné. Parce qu'à partir du moment où on en a plusieurs, c'est plus simple de repérer un firewall par son nom que par son adresse IP !
merci !

2. marieG

mercredi, novembre 25 2009 | 15:16

Bon ben je réponds toute seule à ma question ...
dans syslog-ng.conf, écrire :

options {

   dns_use(persist_only);
dns_cache_hosts(/etc/hosts); };

puis dans le fichier /etc/hosts :
x.x.x.x NomDeLaMachine1
y.y.y.y NomDeLaMachine2

3. GanGan

mercredi, novembre 25 2009 | 23:55

Très bien merci pour cette info, je n'avais plus ce soft en prod donc j'ai pas pu regardé.

4. sirlys

lundi, février 8 2010 | 13:33

Bonjour

Quand je lance l'install de php-syslog-ng
http://localhost/php-syslog-ng/html...

Au step 2 j'ai ce message

Are you sure these settings are correct?
Php-Syslog-NG will now attempt to populate a Database with the settings you have supplie

Help me

Merci d'avance

Sirlys

5. wael

jeudi, avril 8 2010 | 17:56

s'il vous plait pouvez vous me donner un exemplaire de fichier de configuration pour syslog ng (coté client et serveur) pour tester mon modem adsl pour m'envoyer des logs
je suis debutant en linux
merci d'avance

6. GanGan

jeudi, avril 8 2010 | 23:13

J'ai plus ce soft d'installé sous la main, mais en suivant l'article tu as des soucis ?