📜

Gestion des logs — Rsyslog + LogAnalyzer

Rsyslog LogAnalyzer 4.1.13 MariaDB Apache SIO 2A — SISR

📋 Table des matières
Contexte & Architecture ① Installation de la pile LAMP ② Module MySQL pour Rsyslog ③ Configuration de Rsyslog ④ Installation de LogAnalyzer ⑤ Modification de la table SystemEvents ⑥ Langue française ⑦ Centralisation des logs Apache ⑧ Test de fonctionnement ⑨ Configuration d'un équipement Cisco ✅ Résultat attendu

📋 Contexte


Les logs sont des fichiers texte qui recensent chronologiquement tous les événements survenus sur un système informatique : redémarrages de services, connexions utilisateurs, erreurs système ou applicatives.

Exporter les journaux de tous ses serveurs sur une machine dédiée est une bonne pratique. En y ajoutant une interface graphique, ils peuvent être triés, classés et consultés par source ou par criticité.

📡
Protocole : Rsyslog avec TCP (port 514) pour une transmission fiable — contrairement à UDP qui n'accuse pas réception.
Interface web : LogAnalyzer 4.1.13  ·  Base de données : MariaDB (base Syslog)

Architecture

MachineRôleComposants
Serveur de logsCentralisation + InterfaceRsyslog + MariaDB + Apache + LogAnalyzer
Serveur Web (LAMP)Machine superviséeApache + Rsyslog (client)
Équipement CiscoÉquipement réseau superviséSyslog TCP → port 514
01
Installation de la pile LAMP
Linux · Apache · MariaDB · PHP — environnement pour LogAnalyzer

🔎
Installer l'environnement nécessaire pour héberger LogAnalyzer et stocker les logs dans une base MariaDB.
bash
apt update -y
apt install apache2 php php-cli php-common php-mysqli php-mbstring mariadb-server mariadb-client -y
📖 Explication des paquets
PaquetRôle
apache2Serveur web pour héberger LogAnalyzer
php + modules php-*Modules PHP nécessaires à LogAnalyzer
mariadb-serverBase de données pour stocker les logs
mariadb-clientClient MySQL en ligne de commande

Sécurisation MariaDB

bash
mysql_secure_installation
Définit un mot de passe root · Supprime les comptes anonymes · Renforce la sécurité du serveur de base.
02
Module MySQL pour Rsyslog
Création automatique de la base Syslog et des tables

🔎
Les logs doivent être enregistrés directement dans une base de données MariaDB.
bash
apt install rsyslog-mysql -y
⚠️
Lors de l'installation, répondre « oui » pour laisser dbconfig-common configurer automatiquement la base.

Cela crée automatiquement :

ÉlémentValeur
Base de donnéesSyslog
Table événementsSystemEvents
Table propriétésSystemEventsProperties
Utilisateurrsyslog
Mot de passemdp_root
Port3306
03
Configuration de Rsyslog
Réception TCP port 514 · Envoi vers MariaDB

🔎
Le serveur doit recevoir des logs distants en TCP et les stocker en base de données.

Sauvegarde du fichier de configuration

bash
cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
Permet de restaurer la configuration initiale en cas d'erreur.

Activation de la réception TCP

Éditer le fichier puis décommenter les 2 lignes sous # provides TCP syslog reception :

bash
nano /etc/rsyslog.conf
config
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
📖 Explication
  • imtcp — module qui active la réception en TCP
  • port 514 — port standard du protocole syslog
  • TCP — transmission fiable avec accusé de réception (≠ UDP)

Envoi des logs vers la base de données

Ajouter à la fin du fichier /etc/rsyslog.conf :

config
*.* :ommysql:localhost,Syslog,rsyslog,mdp_root
📖 Explication de la ligne ommysql
ParamètreValeurDescription
*.*Toutes facilities/prioritésCapture tous les types de logs
ommysqlModule outputEnvoie les logs vers MySQL/MariaDB
localhostHôteServeur de base local
SyslogNom de la baseBase créée par rsyslog-mysql
rsyslogUtilisateurCompte dédié
mdp_rootMot de passeMot de passe de l'utilisateur
bash
systemctl restart rsyslog
04
Installation de LogAnalyzer
Interface web de consultation des logs en temps réel

🔎
Déployer l'interface graphique pour consulter et analyser les logs en temps réel.

Téléchargement

bash
cd /srv
wget https://download.adiscon.com/loganalyzer/loganalyzer-4.1.13.tar.gz
tar -xvzf loganalyzer-4.1.13.tar.gz

Déploiement

bash
mkdir /var/www/html/loganalyzer
cp -a loganalyzer-4.1.13/src/* /var/www/html/loganalyzer
chown -R www-data:www-data /var/www/html/loganalyzer

Assistant d'installation web

URL
http://IP_SERVEUR/loganalyzer
05
Modification de la table SystemEvents
Ajout des colonnes checksum et processid

🔎
Certaines fonctionnalités de LogAnalyzer nécessitent des colonnes supplémentaires dans la table.
⚠️
À faire avant la dernière étape de l'assistant LogAnalyzer.
bash
mysql -u root -p
sql
use Syslog;
alter table SystemEvents add column checksum int null;
alter table SystemEvents add column processid varchar(60) null;
quit;
📖 Explication
  • use Syslog — sélectionne la base de données
  • alter table — modifie la structure de la table existante
  • add column checksum — requis pour l'intégrité des messages
  • add column processid — requis pour l'affichage du PID dans LogAnalyzer
06
Langue française pour LogAnalyzer
Installation du pack de traduction fr_FR

🔎
Optionnel mais recommandé : installer le pack de langue française pour LogAnalyzer.
bash
cd /var/www/html/loganalyzer/lang
wget https://loganalyzer.adiscon.com/plugins/files/translations/loganalyzer_lang_fr_FR_3.6.3.zip
unzip loganalyzer_lang_fr_FR_3.6.3.zip
chown -R www-data:www-data /var/www/html/loganalyzer/lang/
Ne pas oublier de réappliquer les droits www-data après extraction de l'archive.
07
Centralisation des logs d'un serveur Apache
Configuration sur le serveur web · Redirection Rsyslog → serveur de logs

🔎
Un second serveur LAMP doit envoyer ses logs vers le serveur central de logs.

Modification Apache (sur le serveur web)

Dans /etc/apache2/sites-available/000-default.conf, remplacer :

apache config
ErrorLog "|/usr/bin/logger -t APACHE -p local6.info"
CustomLog "|/usr/bin/logger -t APACHE -p local6.info" combined
📖 Explication
  • logger — redirige les logs Apache vers Rsyslog local
  • -t APACHE — tag pour identifier la source dans la base
  • local6 — facility dédiée pour identifier les logs du site web
  • combined — format détaillé des requêtes HTTP (IP, méthode, URL, code HTTP)

Configuration Rsyslog côté serveur web

Ajouter à la fin de /etc/rsyslog.conf sur le serveur web :

config
# Tous les logs locaux vers le serveur de logs (TCP)
*.* @@172.17.219.10:514

# Logs Apache (local6) vers le serveur de logs
local6.* @@172.17.219.10
📖 Explication des lignes
ÉlémentSignification
*.*Tous les logs locaux (toutes facilities et priorités)
@@Envoi en TCP (fiable, avec accusé de réception)
172.17.219.10:514IP du serveur de logs + port syslog standard
local6.*Uniquement les logs Apache (facility local6)
bash
systemctl restart rsyslog
08
Test de fonctionnement
Générer des événements · Vérifier dans LogAnalyzer

🔎
Vérifier que les logs remontent correctement dans LogAnalyzer.

Générer des événements

bash
# Redémarrer Apache pour générer des événements DAEMON
systemctl restart apache2

# Générer du trafic web (requêtes GET)
# Naviguer sur : http://IP_SERVEUR_WEB
Le redémarrage d'Apache génère des événements de type DAEMON. Les requêtes GET apparaissent avec l'adresse IP source dans LogAnalyzer.

Si les logs ne remontent pas

⚠️
Le grand flux d'événements peut rapidement surcharger la table SystemEvents. Il est important d'archiver et purger régulièrement cette table via un script automatisé.
09
Configuration d'un équipement Cisco
Syslog TCP · Horodatage · Facility local0

🔎
Un routeur/switch Cisco doit envoyer ses logs vers le serveur central via Syslog TCP.

Configuration sur le routeur/switch

Cisco IOS
Router# clock set 10:30:00 5 June 2025
Router# configure terminal
Router(config)# service timestamps log datetime msec
Router(config)# logging host 172.17.219.10 transport tcp port 514
Router(config)# logging trap notifications
Router(config)# logging facility local0
Router(config)# end
Router# copy running-config startup-config
📖 Explication des commandes
CommandeDescription
clock setRègle l'heure du routeur (indispensable pour horodater les logs)
service timestampsAjoute date et heure à chaque message de log
logging hostDéfinit le serveur de logs destination
transport tcp port 514Utilise TCP pour une transmission fiable
logging trap notificationsNiveau de sévérité minimum : notifications (niveau 5)
logging facility local0Identifie la source Cisco dans la base Syslog
copy running startupSauvegarde la config pour qu'elle persiste au redémarrage

Niveaux de sévérité Syslog Cisco

NiveauMot-cléDescription
0emergenciesSystème inutilisable
1alertsAction immédiate requise
2criticalConditions critiques
3errorsMessages d'erreur
4warningsMessages d'avertissement
5notificationsÉvénements normaux mais significatifs
6informationalMessages informatifs
7debuggingMessages de débogage (verbeux)

Résultat attendu


💡
Bonne pratique : Mettre en place un cron job de purge régulière pour éviter la saturation de la base :
DELETE FROM Syslog.SystemEvents WHERE ReceivedAt < DATE_SUB(NOW(), INTERVAL 30 DAY);

SIO 2A — SISR · Gestion des logs · Rsyslog + LogAnalyzer 4.1.13 + MariaDB