Dans un monde informatique où les systèmes distribués, les microservices et les conteneurs dominent, la capacité à collecter, analyser et visualiser les logs en temps réel est indispensable. Les logs sont bien plus que de simples lignes de texte : ils révèlent des erreurs critiques, des performances anormales, des comportements utilisateurs, ou encore des failles potentielles.
Une approche centralisée permet de regrouper ces informations, les structurer, les stocker de manière performante et les rendre accessibles pour tous les membres de l’équipe technique. C’est là qu’interviennent les outils Filebeat, Logstash, Elasticsearch et Kibana, formant une architecture connue sous le nom de stack ELK. Ce guide approfondi vous accompagne dans la mise en œuvre d’un pipeline fiable, extensible et sécurisé pour la gestion des logs.
Cette solution est idéale pour garantir une visibilité transverse, réduire les temps d’investigation lors d’incidents, produire des indicateurs clés de performance et répondre à des exigences réglementaires ou de sécurité. En intégrant ce pipeline dans vos processus, vous adoptez une approche proactive de la supervision, indispensable à la scalabilité et à la résilience de vos environnements de production.
Comprendre chaque composant de l’architecture ELK
L’architecture repose sur la division des responsabilités entre plusieurs composants :
- Filebeat : un agent léger et efficace pour expédier des fichiers de logs. Il suit les nouveaux événements dans les fichiers et les expédie vers un nœud central. Très utile dans les environnements à forte volumétrie.
- Logstash : il joue un rôle de transformation. Grâce à ses filtres, il peut parser les logs, enrichir les données, détecter des schémas particuliers et renvoyer le tout vers une destination.
- Elasticsearch : moteur de recherche et de stockage distribué. Il offre un indexation rapide, une haute disponibilité et une recherche puissante basée sur Lucene.
- Kibana : tableau de bord intuitif et personnalisable permettant d’exploiter visuellement les données contenues dans Elasticsearch.
Cette approche modulaire permet de facilement ajouter des composants supplémentaires, comme un bus Kafka, des métriques via Metricbeat, des traces via OpenTelemetry, ou même d’automatiser le provisionnement de dashboards via des API.
En associant ces outils, vous créez une plateforme complète de gestion des événements, adaptable aussi bien aux petites infrastructures qu’aux architectures multi-cloud ou hybrides.
Préparer l’environnement : ce dont vous aurez besoin
Configuration minimale recommandée
2 machines Linux (physiques, virtuelles ou conteneurisées) :
- Serveur 1 : ELK Stack (Elasticsearch, Logstash, Kibana)
- Serveur 2 : Filebeat (agent log)
Systèmes compatibles : Ubuntu, Debian, CentOS
- Ports à ouvrir :
- 5044 (Logstash input beats)
- 9200 (Elasticsearch)
- 5601 (Kibana)
- 9300 (communication interne Elasticsearch si cluster)
Logiciels nécessaires
- Java 11 ou plus pour Logstash
- Elasticsearch 8+
- Kibana 8+
- Logstash
- Filebeat (version compatible)
Conseil : utilisez Ansible ou Docker Compose pour industrialiser l’installation et automatiser les déploiements dans des environnements multiples (staging, prod).
Bonnes pratiques : assurez-vous que la synchronisation des horloges (via NTP) est active entre les hôtes pour garantir la cohérence temporelle des événements dans Kibana.
Étape 1 : Configuration de Logstash pour recevoir les événements de Filebeat
Commencez par créer un fichier de configuration Logstash :
cd /etc/logstash/conf.d
nano 01-input.conf
Contenu recommandé :
input {
beats {
port => 5044
}
}
filter {
# Section parsing à personnaliser selon vos logs
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "filebeat-%{+YYYY.MM.dd}"
}
}
Vérifiez la configuration puis redémarrez :
logstash --config.test_and_exit
systemctl restart logstash
Pour du débogage plus fin, ajoutez un output stdout temporaire :
output {
stdout {
codec => rubydebug
}
}
Étape 2 : Installation et configuration de Filebeat
Sur le serveur source des logs :
nano /etc/filebeat/filebeat.yml
Désactivez la sortie Elasticsearch directe :
#output.elasticsearch:
# hosts: ["localhost:9200"]
Activez l’envoi vers Logstash :
output.logstash:
hosts: ["<IP-LOGSTASH>:5044"]
Configurez les entrées de logs :
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog
- /var/log/auth.log
- /var/log/nginx/*.log
Redémarrage :
systemctl restart filebeat
Suivi :
tail -f /var/log/filebeat/filebeat.log
Ajoutez des tags
ou fields
pour filtrer facilement les logs dans Kibana ou appliquer des règles spécifiques dans Logstash :
fields:
service: "nginx"
environment: "production"
Étape 3 : Vérification dans Kibana et création des index
- Accédez à Kibana :
http://<IP-KIBANA>:5601
- Créez un Index Pattern :
filebeat-*
- Dans Discover, validez l’arrivée des logs
- Créez un dashboard de test pour visualiser quelques événements
- Utilisez la fonctionnalité Lens pour générer des graphiques dynamiques rapidement
Étape 4 : Enrichissement et parsing des logs avec Logstash
Exemple 1 : Fichier d’accès Nginx
filter {
grok {
match => { "message" => "%{IPORHOST:client_ip} - - \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATH:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:status} %{NUMBER:bytes}" }
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
}
geoip {
source => "client_ip"
}
}
Exemple 2 : Logs JSON applicatifs
filter {
json {
source => "message"
}
mutate {
rename => { "@timestamp" => "log_timestamp" }
}
}
Ajoutez des conditions if
pour appliquer différents traitements selon la source ou le contenu des logs.
Utilisez le Grok Debugger de Kibana pour affiner vos filtres.
Étape 5 : Modules Filebeat et dashboards automatiques
Filebeat propose des modules prêts à l’emploi pour : nginx, apache, mysql, system, auditd, etc.
filebeat modules enable system nginx
filebeat setup --dashboards
Les modules configurent automatiquement :
- Dashboards Kibana
- Pipelines Logstash
- Templates Elasticsearch
Vous pouvez également personnaliser ces modules en dupliquant les fichiers YAML dans /etc/filebeat/modules.d/
et en les adaptant à votre contexte.
Étape 6 : Supervision, logs système et diagnostic
Surveillez :
/var/log/logstash/logstash-plain.log
/var/log/filebeat/filebeat.log
- Journal Elasticsearch :
/var/log/elasticsearch/elasticsearch.log
Commandes utiles :
systemctl status logstash
journalctl -u filebeat -f
logstash --config.test_and_exit
Automatisez la supervision avec Metricbeat ou Grafana + Prometheus pour avoir une vision en temps réel de la performance du pipeline.
Étape 7 : Visualiser les données avec Kibana
Créez des visualisations avancées :
- Histogrammes des erreurs par heure
- Cartes géographiques avec
geoip
- Corrélations entre types de logs
- Requêtes filtrées par champ :
client_ip
,status
,host
- Alertes visuelles via l’interface Rules & Connectors
Ajoutez des filtres interactifs, des plages temporelles dynamiques et exportez vos dashboards pour les réutiliser ailleurs.
Bonnes pratiques pour la production
- Logs structurés (JSON) → parsing plus simple
- Standardisez les formats → cohérence dans l’indexation
- Activez la sécurité (TLS, rôles Kibana, protection API)
- Utilisez ILM pour limiter l’occupation disque
- Intégrez des alertes (Watcher, ElastAlert ou règles Kibana)
- Documentez votre architecture et vos pipelines
- Testez régulièrement les performances et la latence du pipeline
Conclusion : vers une observabilité intelligente
En déployant Filebeat, Logstash et Elasticsearch, vous construisez un pipeline résilient, extensible et visuel. Cette infrastructure vous permet d’exploiter pleinement vos logs applicatifs, système ou réseau. Avec Kibana, vous disposez d’un cockpit d’analyse temps réel pour comprendre et surveiller votre SI.
Ce pipeline constitue un socle robuste pour une stratégie d’observabilité plus globale, incluant traces, métriques, alertes et tableaux de bord corrélés. Il s’adapte aussi bien à des PME qu’à des architectures de type cloud-native.
Foire aux questions (FAQ)
Puis-je utiliser cette stack pour Docker ou Kubernetes ?
Oui, Filebeat peut surveiller les conteneurs et pods via annotations et inputs docker
ou kubernetes
.
Comment gérer des pics de charge en logs ?
Insérez un buffer Kafka, ou utilisez Redis pour désengorger Logstash. Pensez à découpler ingestion et traitement.
Puis-je exporter mes dashboards ?
Oui, via les API Kibana, les spaces, ou manuellement via JSON.
Peut-on ajouter de la détection d’anomalies ?
Oui, via Machine Learning d’Elastic ou plugins externes comme Anomaly Detection de Grafana.
Quels autres agents existent ?
Metricbeat (métriques), Packetbeat (réseau), Heartbeat (ping), Auditbeat (sécurité), Elastic Agent (solution unifiée).
Existe-t-il une version managée ?
Oui, Elastic propose un service managé sur AWS, Azure et GCP avec toutes les fonctionnalités intégrées.
Merci pour votre lecture ! Partagez vos retours, améliorez le pipeline, et adoptez une culture de logs proactive pour des systèmes plus sûrs, observables et performants.