Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
syslog-ng [Le 06/05/2010, 15:43] – 93.20.177.114 | syslog-ng [Le 21/08/2019, 13:28] (Version actuelle) – plus simple pour juste copier/coller les noms des paquets directement vers un terminal 83.152.209.122 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ====== Serveur SYSLOG : Syslog-ng ====== | ||
+ | Linux et de multiples équipements réseaux effectuent une journalisation des événements qui s' | ||
+ | |||
+ | L' | ||
+ | |||
+ | Avant même d' | ||
+ | |||
+ | C'est une excellente base et une approche simple de la journalisation sous Linux qui va suivre... | ||
+ | Syslog-ng est une solution de journalisation sous systèmes Unix et Linux depuis les années 1980. | ||
+ | |||
+ | Nous nous intéresserons ici à [[wpfr> | ||
+ | |||
+ | Son installation n'est pas très complexe, mais nécessite un peu de rigueur. | ||
+ | |||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | * Disposer des [[: | ||
+ | * Disposer d'une connexion à Internet configurée et activée ; | ||
+ | * Un [[: | ||
+ | |||
+ | |||
+ | |||
+ | =====Installation===== | ||
+ | |||
+ | **Ne pas laisser les droits de modification à n' | ||
+ | . | ||
+ | L' | ||
+ | |||
+ | * [[: | ||
+ | |||
+ | * [[: | ||
+ | et remplacez | ||
+ | < | ||
+ | # | ||
+ | | ||
+ | </ | ||
+ | |||
+ | FIXME Pouvez-vous expliquer pourquoi la valeur par défaut ne convient pas? | ||
+ | |||
+ | Après avoir effectué ces changements, | ||
+ | |||
+ | < | ||
+ | |||
+ | === Configuration de Syslog-NG === | ||
+ | |||
+ | |||
+ | Le fichier de configuration par défaut est situé dans / | ||
+ | |||
+ | Pour que syslog-ng accepte de recevoir des messages d'une machine distante, vous devez décommenter une ligne ; pour cela remplacer : | ||
+ | |||
+ | < | ||
+ | # udp();</ | ||
+ | |||
+ | Par | ||
+ | |||
+ | < | ||
+ | udp();</ | ||
+ | |||
+ | |||
+ | < | ||
+ | FIXME | ||
+ | < | ||
+ | source s_net { | ||
+ | udp(); | ||
+ | }; | ||
+ | </ | ||
+ | sinon tous les messages venant du réseaux sont re-dirigé vers les fichiers / | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | ==== Configuration du client Syslog d'une machine ==== | ||
+ | |||
+ | |||
+ | Si vous souhaitez envoyer tous les messages syslog d'une station ou d'un serveur sur le serveur syslog qui les collectera (plutôt que localement), | ||
+ | |||
+ | < | ||
+ | exemple pour l' | ||
+ | < | ||
+ | |||
+ | Maintenant, redémarrez le client syslog de la machine : | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | À partir de maintenant, le serveur syslog-ng est fonctionnel : les logs de la machine lui sont envoyés. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Configuration de php-syslog-ng ==== | ||
+ | |||
+ | |||
+ | php-syslog-ng est une interface web basée sur un script php qui permet de lire les logs qu' | ||
+ | |||
+ | === Télécharger et installer le logiciel === | ||
+ | |||
+ | |||
+ | < | ||
+ | cd phpsyslogng | ||
+ | wget http:// | ||
+ | tar -zxvf php-syslog-ng-* | ||
+ | cd .. | ||
+ | sudo mv phpsyslogng /var/www/ | ||
+ | cd / | ||
+ | |||
+ | === Configuration de MySQL === | ||
+ | |||
+ | |||
+ | Le moyen le plus rapide est d' | ||
+ | |||
+ | Si vous effectuez d' | ||
+ | |||
+ | Après avoir modifié le script dbsetup.sql exécutez le simplement avec la commande : | ||
+ | |||
+ | < | ||
+ | |||
+ | === Configuration de syslog-ng === | ||
+ | |||
+ | |||
+ | Maintenant vous devez configurer syslog-ng pour rediriger les messages dans la base MySQL. Vous devrez ajouter 2 entrées dans le fichier de configuration de syslog-ng. Le fichier de configuration est habituellement dans / | ||
+ | |||
+ | Vous devez premièrement ajouter une entrée ' | ||
+ | |||
+ | < | ||
+ | pipe("/ | ||
+ | template(" | ||
+ | (host, facility, priority, level, tag, datetime, program, msg) | ||
+ | VALUES ( ' | ||
+ | ' | ||
+ | };</ | ||
+ | |||
+ | Ceci va prendre vos logs et les formater dans une requête SQL qui pourra être exécutée pour les ajouter dans la base de données. | ||
+ | |||
+ | Vous devrez également ajouter une entrée de type ' | ||
+ | |||
+ | < | ||
+ | source(s_all); | ||
+ | destination(d_mysql); | ||
+ | };</ | ||
+ | |||
+ | === Configurer syslog-ng pour la redirection vers MySQL === | ||
+ | |||
+ | |||
+ | Un exemple de script qui redirige les logs vers la base MySQL est inclus dans le répertoire des scripts (/ | ||
+ | |||
+ | < | ||
+ | |||
+ | if [ ! -e / | ||
+ | then | ||
+ | mkfifo / | ||
+ | fi | ||
+ | while [ -e / | ||
+ | do | ||
+ | mysql -u syslogfeeder --password=PASS_HERE syslog < / | ||
+ | done</ | ||
+ | |||
+ | Vous devez remplacer PASS_HERE par le mot de passe que vous avez affecté à l' | ||
+ | |||
+ | Avec un script init.d Ubuntu : | ||
+ | Créez un fichier syslog2mysql dans / | ||
+ | |||
+ | < | ||
+ | |||
+ | # Do NOT "set -e" | ||
+ | |||
+ | PATH=/ | ||
+ | DESC=" | ||
+ | NAME=syslog2mysql | ||
+ | PIDFILE=/ | ||
+ | SCRIPTNAME=/ | ||
+ | |||
+ | # Exit if mysql client is not installed | ||
+ | [ -x "/ | ||
+ | |||
+ | # Load the VERBOSE setting and other rcS variables | ||
+ | [ -f / | ||
+ | |||
+ | # Define LSB log_* functions. | ||
+ | # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. | ||
+ | . / | ||
+ | |||
+ | # | ||
+ | # Function that starts the daemon/ | ||
+ | # | ||
+ | do_start() | ||
+ | { | ||
+ | [ ! -e / | ||
+ | if [ -e $PIDFILE ]; then | ||
+ | if ps -p $(cat $PIDFILE) >/ | ||
+ | echo -n -e " | ||
+ | return 1 | ||
+ | else | ||
+ | rm -f $PIDFILE | ||
+ | fi | ||
+ | fi | ||
+ | { | ||
+ | while [ -e / | ||
+ | do | ||
+ | mysql -u syslogfeeder --password=PASS_HERE syslog < / | ||
+ | sleep 1 | ||
+ | done | ||
+ | } & | ||
+ | echo $! > $PIDFILE | ||
+ | } | ||
+ | |||
+ | # | ||
+ | # Function that stops the daemon/ | ||
+ | # | ||
+ | do_stop() | ||
+ | { | ||
+ | if [ -e $PIDFILE ]; then | ||
+ | PID=$(cat $PIDFILE) | ||
+ | if ps -p $PID >/ | ||
+ | # get PID of child | ||
+ | CPID=$(pgrep -P $PID) | ||
+ | # kill script | ||
+ | kill $PID | ||
+ | # kill child | ||
+ | kill $CPID | ||
+ | rm -f $PIDFILE | ||
+ | return 0 | ||
+ | else | ||
+ | echo -e " | ||
+ | echo -n -e " | ||
+ | rm -f $PIDFILE | ||
+ | return 1 | ||
+ | fi | ||
+ | else | ||
+ | echo -n -e " | ||
+ | return 1 | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | case " | ||
+ | start) | ||
+ | [ " | ||
+ | do_start | ||
+ | case " | ||
+ | 0|1) [ " | ||
+ | 2) [ " | ||
+ | esac | ||
+ | ;; | ||
+ | stop) | ||
+ | [ " | ||
+ | do_stop | ||
+ | case " | ||
+ | 0|1) [ " | ||
+ | 2) [ " | ||
+ | esac | ||
+ | ;; | ||
+ | restart|force-reload) | ||
+ | # | ||
+ | # If the " | ||
+ | # ' | ||
+ | # | ||
+ | log_daemon_msg " | ||
+ | do_stop | ||
+ | case " | ||
+ | 0|1) | ||
+ | do_start | ||
+ | case " | ||
+ | 0) log_end_msg 0 ;; | ||
+ | 1) log_end_msg 1 ;; # Old process is still running | ||
+ | *) log_end_msg 1 ;; # Failed to start | ||
+ | esac | ||
+ | ;; | ||
+ | *) | ||
+ | # Failed to stop | ||
+ | log_end_msg 1 | ||
+ | ;; | ||
+ | esac | ||
+ | ;; | ||
+ | *) | ||
+ | echo " | ||
+ | exit 3 | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | : | ||
+ | </ | ||
+ | |||
+ | |||
+ | Pensez à modifier le pwd de syslogfeeder dedans | ||
+ | |||
+ | Créez le lien pour lancer le script au démarrage | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | Maintenant démarrez le service syslog2mysql : | ||
+ | |||
+ | < | ||
+ | |||
+ | ou si vous préférez ne pas utiliser init.d et utiliser directement le script : | ||
+ | |||
+ | < | ||
+ | |||
+ | Note : ce script doit toujours s' | ||
+ | |||
+ | Il est maintenant temps de redémarrer le démon syslog-ng et d' | ||
+ | |||
+ | < | ||
+ | |||
+ | === Modification du fichier config.php === | ||
+ | |||
+ | |||
+ | Si vous utilisez la base de données par défaut initialisée par le fichier dbsetup.sql, | ||
+ | |||
+ | Sinon, parcourez le fichier config.php et configurez les paramètres dont vous avez besoin. Toutes les options sont expliquées dans le fichier. | ||
+ | |||
+ | < | ||
+ | |||
+ | php-syslog-ng est maintenant accessible à l' | ||
+ | Un compte administrateur (admin) a été créé par dbsetup.sql avec le mot de passe admin | ||
+ | |||
+ | Si après la connexion vous obtenez le message "Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== 4. Configuration de la rotation des journaux ==== | ||
+ | |||
+ | |||
+ | La rotation permet d' | ||
+ | |||
+ | Rotation des journaux de la base MYSQL | ||
+ | |||
+ | Il est préférable d' | ||
+ | |||
+ | Vous devez éditer le fichier logrotate.php dans le répertoire ' | ||
+ | |||
+ | Si vous choissiez d' | ||
+ | |||
+ | Pour cela, éditez la crontab du superutilisateur... | ||
+ | |||
+ | < | ||
+ | |||
+ | ... pour y ajouter une entrée : | ||
+ | |||
+ | < | ||
+ | |||
+ | Ici, la rotation des logs se fera tout les lundis (0) à 22h00 | ||
+ | |||
+ | Si vous activez le paramètre LOGROTATERETENTION du fichier config.php, alors les logs plus anciens que ce paramètre seront supprimés à l' | ||
+ | |||
+ | |||
+ | |||
+ | ==== 5. Résolution des problèmes ==== | ||
+ | |||
+ | Si vous rencontrez le messages d' | ||
+ | |||
+ | < | ||
+ | |||
+ | FIXME La commande ne résout que temporairement le problème ! | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // |