Gestion Logs Application Elk Stack (Elasticsearch, Logstash, Kibana)

Gérer les logs d’une application avec ELK Stack (Elasticsearch, Logstash, Kibana)

Tinhinane Kadri Ingénieure DevOps
10 mins
03 avril 2025
Dans cet article :
  1. Introduction à l'ELK Stack
  2. Prérequis
  3. Installation et configuration d'Elasticsearch
  4. Configuration de Logstash pour collecter les logs
  5. Configuration de Kibana pour visualiser les logs
  6. Sécurisation de l'ELK Stack
  7. Optimisation de l'ELK Stack
  8. Gestion des index
  9. Conclusion

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.

Cta Livre Blanc Conteneurisation

L'ELK Stack se compose de trois éléments principaux :

Prérequis

Avant de commencer, assurez-vous d'avoir les éléments suivants :

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 :

  1. Lire les logs depuis le fichier /var/log/myapp.log
  2. Parser les logs selon leur format (JSON, texte brut, etc.)
  3. 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

  1. Accédez à Kibana → http://localhost:5601
  2. Allez dans "Stack Management" → "Index Patterns"
  3. Cliquez sur "Create Index Pattern"
  4. Nom de l’index → app-logs-*
  5. Sélectionnez le champ @timestamp comme clé temporelle
  6. Validez et sauvegardez

Exploration des logs avec Discover

Une fois l’index configuré :

  1. Allez dans "Discover"
  2. Sélectionnez l’index app-logs-*
  3. Affichez les champs clés :
    • @timestamp (Date du log)
    • loglevel (INFO, ERROR, DEBUG, etc.)
    • message (Contenu du log)
  4. Appliquez des filtres pour voir uniquement les erreurs :
    • Cliquez sur loglevel → Sélectionnez "ERROR"
  5. Sauvegardez votre vue pour une utilisation future

Création d'un dashboard pour visualiser les logs

  1. Allez dans "Dashboard" → "Create new Dashboard"
  2. 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
  3. 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.

  1. Allez dans "Stack Management" → "Rules & Connectors"
  2. Cliquez sur "Create Rule"
  3. Sélectionnez "Elasticsearch Query"
  4. Définissez la condition :
    • {
    •   "query": {
    •     "match": {
    •       "loglevel": "ERROR"
    •     }
    •   }
    • }
  5. 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 :

Optimisation de l'ELK Stack

Pour garantir des performances optimales de votre ELK Stack, voici quelques conseils :

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 :

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.

Articles similaires

DevSecOps Maturity Model : quel modèle choisir ?

La conteneurisation est devenue une pierre angulaire de la modernisation des applications dans le monde de l’informatique. Cette technologie permet...

Applications conteneurisées : comment ça fonctionne ?

La conteneurisation est devenue une pierre angulaire de la modernisation des applications dans le monde de l’informatique. Cette technologie permet...

Conteneurs sur AWS : ECS vs EKS vs Lambda

Avec plusieurs options disponibles, telles qu’Amazon ECS, EKS et Lambda, il est crucial pour les entreprises de sélectionner une solution...