# =================================== # Fichier : logstash.conf # Description : Configuration complète de Logstash # Auteur : DevOps Project # Date : 30 janvier 2026 # =================================== # ——— SECTION INPUT ——— # Définit les sources des logs input { # Entrée via Beats (Filebeat, Metricbeat, etc.) – recommandé beats { port => 5044 # host => "0.0.0.0" # Écoute sur toutes les interfaces } # Exemple : lecture de fichiers logs locaux # file { # path => ["/var/log/*.log", "/app/logs/*.log"] # start_position => "beginning" # sincedb_path => "/dev/null" # Pour relire les fichiers à chaque démarrage (développement) # } # Exemple : réception de logs Syslog via UDP/TCP # syslog { # port => 514 # type => "syslog" # } } # ——— SECTION FILTER ——— # Traitement, parsing et enrichissement des logs filter { # Exemple : filtrer uniquement les logs de type "nginx" # if [type] == "nginx" { # grok { # match => { "message" => "%{COMBINEDAPACHELOG}" } # } # date { # match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] # } # } # Exemple : parser des logs JSON # json { # source => "message" # } # Ajout de champs métadonnées mutate { add_field => { "environment" => "production" "project" => "DevOpsProject" } # Supprimer des champs inutiles # remove_field => ["agent", "input_type"] } # Gestion des erreurs de parsing # if "_grokparsefailure" in [tags] { # drop {} # } } # ——— SECTION OUTPUT ——— # Envoi des logs vers une destination output { # Sortie vers Elasticsearch elasticsearch { hosts => ["http://elasticsearch:9200"] index => "logs-%{+YYYY.MM.dd}" # user => "elastic" # password => "changeme" } # Sortie vers la console (utile pour le debug) stdout { codec => rubydebug } # Exemple : sortie vers un fichier # file { # path => "/logs/parsed-%{+YYYY-MM-dd}.log" # codec => json # } } # ——— CONSEILS ——— # - Placez ce fichier dans : ./pipeline/logstash.conf # - Montez le dossier dans le conteneur Docker # - Assurez-vous qu’Elasticsearch est prêt avant Logstash # - Utilisez `depends_on` avec condition de santé dans docker-compose.yml