Configuration d’Elasticsearch pour l’Analyse de Logs
La pile ELK (Elasticsearch, Logstash, Kibana) est la solution open source la plus populaire pour l’analyse centralisée des logs. Elasticsearch fournit le moteur de recherche et d’indexation, Logstash traite et transforme les données, et Kibana offre l’interface de visualisation. Ce guide couvre l’installation complète sur Linux et la configuration optimale pour l’analyse de logs en production.
Installation d’Elasticsearch
Commencez par importer la clé GPG et ajouter le dépôt officiel Elastic. Elasticsearch inclut sa propre distribution Java, donc aucune installation préalable de JDK n’est nécessaire :
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
sudo apt install elasticsearch
Configurez les paramètres essentiels dans /etc/elasticsearch/elasticsearch.yml :
cluster.name: logs-production
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
Ajustez la mémoire heap JVM dans /etc/elasticsearch/jvm.options.d/heap.options :
-Xms8g
-Xmx8g
Démarrez le service et vérifiez que le cluster est opérationnel :
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
curl -k -u elastic:password https://localhost:9200/_cluster/health?pretty
Configuration de Logstash
Logstash transforme les logs bruts en documents structurés prêts pour l’indexation. Installez Logstash et créez une pipeline pour traiter les logs système :
sudo apt install logstash
Créez le fichier de pipeline /etc/logstash/conf.d/syslog.conf :
input {
beats {
port => 5044
}
}
filter {
if [fields][log_type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program}(?:\[%{POSINT:pid}\])?: %{GREEDYDATA:log_message}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch {
hosts => ["https://localhost:9200"]
user => "elastic"
password => "votre_mot_de_passe"
ssl_certificate_verification => true
data_stream => true
data_stream_type => "logs"
data_stream_dataset => "syslog"
data_stream_namespace => "production"
}
}
Testez la configuration avant de démarrer :
sudo /usr/share/logstash/bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/syslog.conf
sudo systemctl enable logstash
sudo systemctl start logstash
Tableaux de Bord Kibana
Kibana fournit l’interface web pour explorer et visualiser les données indexées dans Elasticsearch. Installez et configurez Kibana :
sudo apt install kibana
Éditez /etc/kibana/kibana.yml :
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["https://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "votre_mot_de_passe"
elasticsearch.ssl.verificationMode: certificate
Accédez à Kibana sur http://serveur:5601, créez un data view correspondant à vos index de logs et construisez des tableaux de bord avec des visualisations de type histogramme temporel, tableau de fréquence des erreurs et carte géographique des connexions.
Gestion du Cycle de Vie des Index
La politique ILM (Index Lifecycle Management) automatise la gestion des index pour optimiser les coûts de stockage et les performances. Créez une politique adaptée à l’analyse de logs :
curl -X PUT "https://localhost:9200/_ilm/policy/logs-policy" -H 'Content-Type: application/json' -u elastic:password -k -d'
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "50gb",
"max_age": "1d"
}
}
},
"warm": {
"min_age": "7d",
"actions": {
"shrink": { "number_of_shards": 1 },
"forcemerge": { "max_num_segments": 1 }
}
},
"delete": {
"min_age": "90d",
"actions": { "delete": {} }
}
}
}
}'
Cette politique conserve les données chaudes pendant 7 jours sur des disques SSD rapides, les déplace vers un stockage tiède avec compression pendant 90 jours, puis les supprime automatiquement. Adaptez les durées selon vos exigences de conformité et de rétention.