Ce guide vous permet d’être en mesure de configurer et d'utiliser l'ELK Stack pour gérer efficacement les logs de votre application. Il montre un schéma complet, à personnaliser et à configurer selon le besoin.
Introduction à l'ELK Stack
La gestion des logs est indispensable pour diagnostiquer les problèmes, surveiller les performances et comprendre le comportement de votre application. L'ELK Stack simplifie ce processus en offrant une solution centralisée pour collecter, analyser et visualiser les logs.

L'ELK Stack se compose de trois éléments principaux :
- Elasticsearch: Moteur de recherche et d'analyse distribué.
- Logstash: Pipeline de traitement de données côté serveur qui ingère les données de diverses sources, les transforme et les envoie à Elasticsearch.
- Kibana: Interface utilisateur web qui permet de visualiser les données stockées dans Elasticsearch et de créer des tableaux de bord interactifs.
Prérequis
Avant de commencer, assurez-vous d'avoir les éléments suivants :
- Une application (Node.js, Python, Java, ou PHP) qui écrit ses logs dans /var/log/myapp.log.
- Une machine Linux (Ubuntu/Debian/CentOS) ou Docker
- Java 8+ pour Elasticsearch
- Les ports suivants ouverts :
- 9200 (Elasticsearch)
- 5601 (Kibana)
- 5044 (Logstash)
Installation et configuration d'Elasticsearch
Installation d'Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.0.0-linux-x86_64.tar.gz
tar -xzf elasticsearch-8.0.0-linux-x86_64.tar.gz
cd elasticsearch-8.0.0
Configuration d'Elasticsearch
Éditez le fichier config/elasticsearch.yml :
cluster.name: mon-application-cluster
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
Démarrage d'Elasticsearch
./bin/elasticsearch
Vérifiez qu'Elasticsearch fonctionne :
curl -X GET "localhost:9200"
Configuration de Logstash pour collecter les logs
Logstash est l'élément central de l'ELK Stack qui se charge de collecter, parser et transformer vos logs avant de les envoyer à Elasticsearch.
Installation de Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.0.0-linux-x86_64.tar.gz
tar -xzf logstash-8.0.0-linux-x86_64.tar.gz
cd logstash-8.0.0
Création du pipeline Logstash
Logstash doit être configuré pour :
- Lire les logs depuis le fichier /var/log/myapp.log
- Parser les logs selon leur format (JSON, texte brut, etc.)
- Envoyer les logs à Elasticsearch
Éditez le fichier /etc/logstash/conf.d/app-logs.conf :
input {
file {
path => "/var/log/myapp.log" # Fichier log de l’application
start_position => "beginning" # Commence à lire depuis le début
sincedb_path => "/dev/null" # Évite de skipper des logs
codec => "json" # Prend en charge les logs au format JSON
}
}
filter {
# Si les logs sont en JSON, Logstash extrait automatiquement les champs
# Si les logs sont en texte brut, on utilise GROK
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
}
# Conversion de la date en format Elasticsearch
date {
match => ["timestamp", "ISO8601"]
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "app-logs-%{+YYYY.MM.dd}" # Indexation journalière
}
stdout { codec => rubydebug } # Debug : afficher les logs en console
}
Si vos logs sont en texte brut et structurés différemment, adaptez le pattern GROK en conséquence.
Démarrage de Logstash et vérification de l’indexation
Redémarrage de Logstash
Redémarrez Logstash avec la nouvelle configuration :
sudo systemctl restart logstash
Ou lancez-le en mode debug :
logstash -f /etc/logstash/conf.d/app-logs.conf
Vérification de l'indexation
Vérifiez que les logs sont bien envoyés à Elasticsearch :
curl -X GET "localhost:9200/app-logs-*/_search?pretty"
Configuration de Kibana pour visualiser les logs
Kibana est l'interface web qui vous permettra d'explorer et de visualiser vos logs.
Installation et configuration de Kibana
Si Kibana n'est pas encore installé, téléchargez et installez-le :
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.0.0-linux-x86_64.tar.gz
tar -xzf kibana-8.0.0-linux-x86_64.tar.gz
cd kibana-8.0.0
Éditez le fichier de configuration config/kibana.yml :
server.port: 5601
server.host: "0.0.0.0" # Permet l'accès à distance
elasticsearch.hosts: ["http://localhost:9200"]
logging.dest: stdout # Pour afficher les logs de Kibana dans la console
Lancez Kibana :
./bin/kibana
Ou avec systemctl si installé via package :
sudo systemctl start kibana
Vérification du bon fonctionnement de Kibana
Ouvrez un navigateur et accédez à : http://localhost:5601
Configuration de Kibana pour explorer les logs
- Accédez à Kibana → http://localhost:5601
- Allez dans "Stack Management" → "Index Patterns"
- Cliquez sur "Create Index Pattern"
- Nom de l’index → app-logs-*
- Sélectionnez le champ @timestamp comme clé temporelle
- Validez et sauvegardez
Exploration des logs avec Discover
Une fois l’index configuré :
- Allez dans "Discover"
- Sélectionnez l’index app-logs-*
- Affichez les champs clés :
- @timestamp (Date du log)
- loglevel (INFO, ERROR, DEBUG, etc.)
- message (Contenu du log)
- Appliquez des filtres pour voir uniquement les erreurs :
- Cliquez sur loglevel → Sélectionnez "ERROR"
- Sauvegardez votre vue pour une utilisation future
Création d'un dashboard pour visualiser les logs
- Allez dans "Dashboard" → "Create new Dashboard"
- Ajoutez des visualisations :
- Histogramme des logs par date
- Pie chart des niveaux de logs (INFO, ERROR, DEBUG)
- Courbe des erreurs au fil du temps
- Liste des derniers logs
- Sauvegardez et partagez votre Dashboard
Configurer des alertes sur les logs
Kibana vous permet de définir des règles d'alerte basées sur le contenu de vos logs.
- Allez dans "Stack Management" → "Rules & Connectors"
- Cliquez sur "Create Rule"
- Sélectionnez "Elasticsearch Query"
- Définissez la condition :
- {
- "query": {
- "match": {
- "loglevel": "ERROR"
- }
- }
- }
- Choisissez un mode d’alerte : Email, Slack, webhook
Sécurisation de l'ELK Stack
Il est essentiel de sécuriser votre ELK Stack, surtout si vous l'exposez sur Internet. Voici quelques mesures à prendre :
- Activer l'authentification et l’autorisation : Configurez Elasticsearch et Kibana pour exiger une authentification pour accéder aux données et aux fonctionnalités.
- Utiliser SSL/TLS : Chiffrez les communications entre les composants de l'ELK Stack et entre l'ELK Stack et les clients.
- Configurer un pare-feu : Limitez l'accès aux ports de l'ELK Stack aux adresses IP autorisées.
Optimisation de l'ELK Stack
Pour garantir des performances optimales de votre ELK Stack, voici quelques conseils :
- Ajuster la taille du heap Java : Allouez suffisamment de mémoire à Elasticsearch et Logstash en ajustant la taille du heap Java.
- Optimiser les requêtes Elasticsearch : Utilisez des requêtes efficaces et évitez les requêtes trop larges qui peuvent ralentir le système.
- Configurer Index Lifecycle Management (ILM) : Définissez des politiques pour gérer le cycle de vie des index Elasticsearch (rotation, suppression, etc.) afin d'optimiser l'utilisation de l'espace disque et les performances.
Gestion des index
La gestion des index dans Elasticsearch est cruciale pour maintenir les performances et l'organisation de vos données. Voici quelques opérations courantes :
- Rotation des index : Créez de nouveaux index régulièrement (par exemple, quotidiennement ou hebdomadairement) pour éviter que les index ne deviennent trop volumineux.
- Suppression des index : Supprimez les index anciens qui ne sont plus nécessaires pour libérer de l'espace disque.
- Optimisation des index : Optimisez les index existants pour améliorer les performances de recherche.
Conclusion
Afin de mieux utiliser ce guide et mettre en place efficacement l’ELK Stuck, il est recommandé d’explorer avec plus de détails chacun des outils et des étapes pour mieux les adapter à votre besoin.