1. Objectif
-
Déployer un serveur central avec Elasticsearch (moteur de recherche) et Kibana (interface web).
-
Installer Filebeat sur des serveurs Linux distants (hébergeant Apache, Nginx, MySQL, etc.).
-
Configurer Filebeat pour envoyer les logs vers Elasticsearch via un pipeline sécurisé.
2. Prérequis
Sur le serveur central :
-
Debian/Ubuntu récent (20.04+)
-
4 Go RAM minimum recommandé
-
Accès root ou sudo
Sur les serveurs agents :
-
Debian/Ubuntu
-
Services applicatifs actifs : Apache2, Nginx, MySQL, etc.
Accès réseau vers le serveur central
3. Installation d’Elasticsearch et Kibana sur le serveur central
3.1 Ajouter le dépôt Elastic
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" |
sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
3.2 Installer Elasticsearch
sudo apt install elasticsearch
Activer et démarrer :
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Vérifier :
curl -k https://localhost:9200 -u elastic
📌 Remarque : par défaut, Elasticsearch génère un mot de passe elastic à l’installation. Vérifiez avec :
sudo cat /etc/elasticsearch/elasticsearch.keystore
3.3 Installer Kibana
sudo apt install kibana
Activer et démarrer :
sudo systemctl enable kibana
sudo systemctl start kibana
Accès : http://<ip_du_serveur>:5601
4. Sécurisation Elasticsearch (optionnel mais recommandé)
Elastic 8+ active TLS et l’authentification par défaut.
-
Récupérer les mots de passe initiaux :
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
-
Générer un certificat pour Filebeat :
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s beats
Ou utiliser une CA pour des certificats manuels si besoin.
5. Installation de Filebeat sur les serveurs applicatifs
5.1 Ajouter le dépôt
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" |
sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
5.2 Installer Filebeat
sudo apt install filebeat
6. Configuration de Filebeat
6.1 Fichier principal : /etc/filebeat/filebeat.yml
🔗 Connexion à Elasticsearch
output.elasticsearch:
hosts: ["https://<IP_SERVEUR_ELASTIC>:9200"]
username: "elastic"
password: "<mot_de_passe>"
ssl.verification_mode: none # À désactiver si vous utilisez un certificat valide
🔗 (Optionnel) Connexion via Logstash
output.logstash:
hosts: ["<IP>:5044"]
6.2 Activer les modules pour services applicatifs
Apache2
sudo filebeat modules enable apache
Modifiez la config si nécessaire :
sudo nano /etc/filebeat/modules.d/apache.yml
Exemple apache.yml :
- module: apache
access:
enabled: true
var.paths: ["/var/log/apache2/access.log*"]
error:
enabled: true
var.paths: ["/var/log/apache2/error.log*"]
Nginx
sudo filebeat modules enable nginx
MySQL
sudo filebeat modules enable mysql
Modifiez /etc/filebeat/modules.d/mysql.yml si vos logs sont ailleurs.
7. Activer et démarrer Filebeat
sudo systemctl enable filebeat
sudo systemctl start filebeat
Tester la config :
sudo filebeat test config
sudo filebeat test output
8. Ingestion dans Elasticsearch et visualisation
8.1 Charger les dashboards (optionnel)
sudo filebeat setup --dashboards
8.2 Chargement des pipelines et templates
sudo filebeat setup --modules apache nginx mysql
9. Visualisation avec Kibana
-
Rendez-vous sur : http://<ip_serveur>:5601
-
Allez dans Discover
-
Choisissez l’index
filebeat-* -
Visualisez les logs d’Apache, Nginx, MySQL, etc.
10. Exemple multi-agent : Apache + Nginx + MySQL
Exemple de modules activés sur un seul hôte
sudo filebeat modules enable apache nginx mysql
Chaque service aura son propre pipeline et dashboard prédéfini dans Kibana.
11. Sécurisation avancée (certificats, firewall)
-
Utilisez TLS avec des certificats signés
-
Limitez le port 9200 uniquement aux agents autorisés via firewall ou VPN
-
Utilisez des utilisateurs restreints pour Filebeat (pas
elastic)
12. Supervision
Vous pouvez visualiser l’état des agents via :
-
Kibana > Observability > Logs > Stream
-
Ou créer des visualisations personnalisées (nombre d’erreurs par application, etc.)