Application de visualisation de logs en temps réel pour Apache, Nginx, NPM et logs système
Installation | Fonctionnalités | Plugins | Configuration | Documentation
- À propos
- Fonctionnalités
- Plugins
- Installation
- Configuration
- Options avancées
- Atouts
- Documentation
- Contribution
- Licence
LogviewR est une application web moderne et performante pour visualiser et analyser les logs en temps réel. Conçue pour les administrateurs système et les développeurs, elle offre une interface intuitive pour surveiller les logs de vos serveurs web et systèmes.
- 🚀 Temps réel : Streaming WebSocket pour un suivi en direct des logs
- 🎨 Interface moderne : Design épuré avec thèmes personnalisables
- 🔍 Recherche avancée : Filtres multiples (niveau, date, IP, méthode HTTP, etc.)
- 📊 Statistiques : Tableaux de bord avec statistiques détaillées par plugin
- 🔐 Sécurisé : Authentification JWT, gestion des rôles, permissions par plugin
- 🐳 Docker-ready : Déploiement simplifié avec Docker Compose
- ⚡ Performant : Optimisations pour gérer des milliers de fichiers de logs
- Tableau interactif : Colonnes dynamiques selon le type de log
- Tri adaptatif : Tri automatique par type (date, nombre, IP, texte)
- Badges colorés : Visualisation intuitive des niveaux, codes HTTP, IP, hostnames
- Recherche texte : Recherche dans tous les champs des logs
- Éditeur intégré : Éditeur de regex avec test en temps réel
- Regex par fichier : Configuration de regex personnalisées par fichier
- Statistiques par plugin : Nombre de fichiers, fichiers lisibles/non lisibles
- Plus gros fichiers : Top 10 des fichiers les plus volumineux
- Statistiques en temps réel : Mise à jour automatique des statistiques
- Tableaux de bord : Vue d'ensemble de tous les plugins actifs
LogviewR supporte plusieurs plugins pour différents types de logs :
🖥️ Host System - Plugin pour les logs système Linux/Unix
-
Types de logs supportés :
- Syslog (
/var/log/syslog,/var/log/messages) - Auth logs (
/var/log/auth.log,/var/log/secure) - Kernel logs (
/var/log/kern.log) - Daemon logs (
/var/log/daemon.log) - Mail logs (
/var/log/mail.log) - Logs personnalisés
- Syslog (
-
Fonctionnalités :
- Détection automatique de l'environnement Docker
- Support des formats syslog standard (RFC 3164, RFC 5424)
- Parsing des timestamps avec gestion des timezones
- Extraction des niveaux de sévérité
- Fichiers personnalisés configurables
-
Configuration :
- Chemin de base configurable (par défaut :
/var/logou/host/logsen Docker) - Patterns de fichiers personnalisables
- Regex personnalisées par type de log
- Chemin de base configurable (par défaut :
🌐 Apache - Plugin pour les logs Apache HTTP Server
-
Types de logs supportés :
- Access logs (formats Combined, Common, VHost)
- Error logs (formats standard et étendus)
-
Fonctionnalités :
- Support des formats Virtual Host
- Support IPv4 et IPv6
- Extraction des champs : IP, timestamp, méthode HTTP, URL, code de statut, taille, referer, user-agent
- Parsing des erreurs avec extraction du module, niveau, PID, TID, client IP
- Regex par défaut pour chaque format
- Regex personnalisées par fichier
-
Configuration :
- Fichiers de logs personnalisés configurables
- Regex par défaut modifiables
- Support des fichiers compressés (.gz)
🚀 Nginx - Plugin pour les logs Nginx
-
Types de logs supportés :
- Access logs (formats Combined, Common, Main, Extended)
- Error logs
-
Fonctionnalités :
- Support de multiples formats de logs Nginx
- Extraction complète des champs HTTP
- Parsing des timestamps avec gestion des timezones
- Regex compatibles avec fail2ban et ELK
- Regex par défaut pour chaque format
-
Configuration :
- Fichiers de logs personnalisés configurables
- Regex par défaut modifiables
- Support des fichiers compressés (.gz)
🔄 Nginx Proxy Manager (NPM) - Plugin pour les logs Nginx Proxy Manager
-
Types de logs supportés :
- Access logs (formats standard avec cache, sans cache, custom combined, extended)
- Error logs
-
Fonctionnalités :
- Support de 5 formats de logs NPM différents
- Détection automatique du format
- Extraction des champs : cache, upstream status, gzip ratio, etc.
- Gestion des sous-domaines (proxy-host-xxx_access.log)
- Regex par défaut pour chaque format
-
Configuration :
- Fichiers de logs personnalisés configurables
- Regex par défaut modifiables
- Support des fichiers compressés (.gz)
⚙️ Configuration
| Variable | Description | Défaut | Requis |
|---|---|---|---|
JWT_SECRET |
Secret pour signer les tokens JWT | - | ✅ Oui |
DASHBOARD_PORT |
Port du dashboard | 7500 |
Non |
HOST_IP |
IP de la machine hôte | Auto-détection | Non |
CONFIG_FILE_PATH |
Chemin du fichier de configuration externe | /app/config/logviewr.conf |
Non |
ADM_GID |
GID du groupe adm sur l'hôte (pour lire les fichiers de logs) | 4 |
Non |
HOST_ROOT_PATH |
Chemin racine du système hôte monté dans le conteneur | /host |
Non |
Permissions des fichiers de logs système
Le plugin Host System Logs nécessite l'accès en lecture aux fichiers de logs système. Par défaut, ces fichiers appartiennent à root:adm avec des permissions 640 (lecture pour root et le groupe adm).
Le conteneur Docker est automatiquement configuré pour :
- Ajouter l'utilisateur
nodeau groupeadm(GID 4) - Permettre la lecture des fichiers appartenant à
root:adm
Pour vérifier que le GID correspond entre l'hôte et le conteneur :
# Sur l'hôte
getent group adm | cut -d: -f3
# Dans le conteneur
docker exec logviewr idSi le GID est différent de 4, ajoutez dans votre fichier .env :
ADM_GID=votre_gidCertains fichiers de logs peuvent avoir des permissions plus restrictives (600 - lecture/écriture pour root uniquement) :
Exemples de fichiers problématiques :
/var/log/php8.0-fpm.log(appartient àroot:rootavec600)/var/log/rkhunter.log.1(appartient àroot:rootavec600)
Solution : Modifier les permissions sur l'hôte pour permettre la lecture par le groupe adm :
# Changer le groupe en adm et ajouter la lecture pour le groupe
sudo chgrp adm /var/log/php8.0-fpm.log*
sudo chmod 640 /var/log/php8.0-fpm.log*
sudo chgrp adm /var/log/rkhunter.log*
sudo chmod 640 /var/log/rkhunter.log*Vérification après modification :
# Vérifier les permissions
ls -la /var/log/php8.0-fpm.log
ls -la /var/log/rkhunter.log.1
# Devrait afficher : -rw-r----- 1 root adm (640)Note de sécurité : Modifier les permissions des fichiers de logs pour permettre la lecture par le groupe adm est une pratique standard sur les systèmes Linux. Le groupe adm est conçu pour permettre l'accès aux fichiers de logs aux administrateurs système.
Le fichier docker-compose.yml configure automatiquement les montages nécessaires pour accéder aux logs du système hôte :
volumes:
# Montage du système de fichiers hôte (lecture seule)
# Cela monte tout le système, y compris /var/log, sous /host
- /:/host:ro
# Montage séparé de /proc et /sys pour une meilleure compatibilité
- /proc:/host/proc:ro
- /sys:/host/sys:roImportant : Le système utilise automatiquement /host/var/log pour accéder aux logs. Un symlink /host/logs -> /host/var/log est créé automatiquement par le script docker-entrypoint.sh si possible, mais le code utilise /host/var/log directement comme fallback.
/var/log:/host/logs:ro car il cause des erreurs "read-only file system" avec Docker.
Les plugins accèdent aux fichiers de logs via les chemins suivants :
- Host System :
/host/var/log/syslog,/host/var/log/auth.log, etc. - Apache :
/host/var/log/apache2/access.log,/host/var/log/apache2/error.log - Nginx :
/host/var/log/nginx/access.log,/host/var/log/nginx/error.log - NPM :
/host/var/log/npm/*.log
La conversion des chemins est automatique : si vous configurez /var/log/apache2 dans un plugin, il sera automatiquement converti en /host/var/log/apache2 (ou /host/logs/apache2 si le symlink existe) dans le conteneur Docker.
Chaque plugin peut être configuré depuis l'interface d'administration :
- Accéder aux paramètres : Menu → Paramètres → Plugins
- Sélectionner un plugin : Cliquer sur la carte du plugin
- Configurer les options :
- Chemin de base des logs
- Patterns de fichiers
- Fichiers personnalisés
- Regex par défaut
- Option de lecture des fichiers compressés
⚡ Performance
- ⚡ Chargement optimisé : Mode quick pour affichage rapide
- 🚀 Chargement en deux phases : Quick stats → Complete stats
- 📊 Gestion efficace : Optimisé pour gérer des milliers de fichiers
- 💾 Décompression intelligente : Support
.gzavec gestion mémoire optimisée
🎨 Interface utilisateur
- 🎨 Design moderne : Interface épurée et intuitive
- 🌈 Thèmes personnalisables : 6 thèmes disponibles (dark, glass, modern, nightly, neon, elegant)
- 📱 Responsive : Interface adaptée à tous les écrans
- 🔍 Recherche avancée : Filtres multiples et recherche texte
- 🎯 Badges colorés : Visualisation intuitive avec couleurs cohérentes
🔐 Sécurité
- 🔐 Authentification JWT : Tokens sécurisés avec expiration configurable
- 👥 Gestion des rôles : Admin, User, Viewer avec permissions granulaires
- 🛡️ Protection CSRF : Protection contre les attaques CSRF
- 🔒 Mots de passe hashés : Utilisation de bcrypt (10 rounds)
- 🚫 Protection brute force : Verrouillage de compte après tentatives échouées
🔌 Extensibilité
- 🔌 Architecture modulaire : Système de plugins extensible
- 📝 Regex personnalisables : Configuration flexible des patterns
- 🎛️ Configuration par plugin : Options spécifiques à chaque plugin
- 🔄 API REST complète : Intégration facile avec d'autres outils
🔄 Fiabilité
- 🔄 Reconnexion automatique : Gestion automatique des déconnexions WebSocket
- 📊 Statistiques en temps réel : Mise à jour automatique des métriques
- 🐛 Gestion d'erreurs : Gestion robuste des erreurs avec messages clairs
- 📈 Monitoring : Statistiques détaillées par plugin
- Guides des parsers : Guide général des parsers et formats supportés
- NPM Parser Help : Formats et regex pour NPM
- Nginx Parser Help : Formats et regex pour Nginx
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- React - Bibliothèque UI
- Express.js - Framework web Node.js
- Tailwind CSS - Framework CSS
- Zustand - Gestion d'état
- Lucide React - Icônes
Fait avec ❤️ pour les administrateurs système et développeurs
Issues | Discussions | Wiki