Mise en place du logging centralisé : ELK Stack (augmentation RAM 8go, clé cryptage kibana, logging, pipeline, etc...)

This commit is contained in:
Waloshi6
2026-01-30 18:19:21 +01:00
parent c8204829e9
commit 88a99c0be1
19 changed files with 323 additions and 32 deletions

View File

@@ -0,0 +1,31 @@
# =================================== Kibana Configuration ===================================
# Configuration principale pour Kibana 8.17
# --- Serveur ---
server.host: "0.0.0.0" # Écoute sur toutes les interfaces réseau
server.port: 5601 # Port d'accès à l'interface web
server.name: "kibana-devops" # Nom affiché dans les logs et l'UI
# --- Elasticsearch ---
elasticsearch.hosts: ["http://elasticsearch:9200"] # URL du cluster Elasticsearch
elasticsearch.requestTimeout: 30000 # Délai max pour les requêtes (ms)
# --- Sécurité ---
xpack.encryptedSavedObjects.encryptionKey: "b524234a31e5bf211a0bb157192b6faf"
# Chiffre les objets sauvegardés (dashboards, visualisations)
xpack.reporting.encryptionKey: "111d1cb71e564e0ac3aafae85151b895"
# Chiffre les rapports générés par Reporting
xpack.security.encryptionKey: "ecb7071b9737158642ca555ce25206fd"
# Chiffre les sessions utilisateur
# --- Fonctionnalités avancées ---
xpack.reporting.roles.enabled: false # ✅ Désactive le système de rôles déprécié
# Active le nouveau système basé sur les privilèges Kibana (requis pour les futures versions)
monitoring.kibana.collection.enabled: true # Active la collecte des métriques Kibana
# Affiche les performances de Kibana dans l'onglet Monitoring
# --- Interface ---
i18n.locale: "fr-FR" # Langue par défaut de l'interface

View File

@@ -1,6 +1,8 @@
-Xms1g
-Xmx1g
-Djava.awt.headless=true
-Dfile.encoding=UTF-8
-Xms512m
-Xmx512m
-XX:+UseG1GC
-XX:+HeapDumpOnOutOfMemoryError
-Djava.security.egd=file:/dev/urandom
-XX:HeapDumpPath=/usr/share/logstash/logs/heap_dump.hprof
-XX:MaxMetaspaceSize=256m
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch

View File

@@ -0,0 +1,14 @@
# pipelines.yml — Fichier de configuration principale pour Logstash
# Il définit quels pipelines (flux de traitement) Logstash doit charger.
# Ce fichier ne remplace pas logstash.conf, il le référence.
- pipeline.id: main
# ✅ Identifiant unique obligatoire du pipeline
path.config: "/usr/share/logstash/pipeline/logstash.conf"
# ✅ Chemin vers le fichier .conf à charger (doit exister dans le conteneur)
pipeline.workers: 2
# Nombre de threads pour traiter les événements (par défaut: nombre de CPU)
pipeline.batch.size: 125
# Taille du lot d'événements traités ensemble
queue.type: memory
# Type de file d'attente : "memory" (par défaut) ou "persisted" (sur disque)

View File

@@ -0,0 +1,92 @@
# ===================================
# 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 quElasticsearch est prêt avant Logstash
# - Utilisez `depends_on` avec condition de santé dans docker-compose.yml