Filebeat : guide complet pour collecter et centraliser vos logs Linux

Elastic Beats · Logs Linux · Centralisation

Filebeat est un agent léger de la suite Elastic conçu pour collecter, parser et expédier des fichiers de logs vers Elasticsearch, Logstash ou d’autres destinations. Dans ce guide, je couvre l’installation sur Debian/Ubuntu, la configuration de filebeat.yml, la collecte syslog/Apache, le debug et la visualisation dans Kibana.

Filebeat : collecte et envoi de logs vers Elasticsearch sur Linux
Filebeat collecte les logs Linux puis les expédie vers Elasticsearch ou Logstash.

📋 En bref

  • But : collecter les logs Linux avec Filebeat et les envoyer vers Elasticsearch ou Logstash
  • Public : admin sys, DevOps, PME/SaaS qui veulent centraliser leurs logs
  • Stack : Debian/Ubuntu, Filebeat 8.x, Elasticsearch, Kibana
  • Dans ce guide : installation, filebeat.yml, syslog, Apache, debug et bonnes pratiques

Sommaire rapide

  • Installer Filebeat sur Debian/Ubuntu
  • Comprendre la structure de filebeat.yml
  • Collecter les logs syslog et Apache
  • Configurer l’output Elasticsearch
  • Déboguer Filebeat en production
  • Exploiter les dashboards Kibana

Qu’est-ce que Filebeat ?

Filebeat fait partie de la famille des Beats, les agents de collecte de données d’Elastic. Son rôle est simple : surveiller des fichiers de logs sur un serveur, lire les nouvelles lignes en temps réel et les envoyer vers une destination (Elasticsearch, Logstash, Kafka, Redis…). Contrairement à Logstash, Filebeat consomme très peu de ressources, ce qui le rend idéal pour être déployé directement sur les serveurs de production.

Les principaux avantages de Filebeat :

  • Empreinte mémoire réduite : en moyenne 30 à 50 Mo de RAM
  • Backpressure-aware : ralentit automatiquement si Elasticsearch est surchargé
  • Modules préconfigurés : system, apache, nginx, mysql, postgresql, auditd, etc.
  • Garantie de livraison at-least-once : un registre interne suit la position de lecture
  • Parsing intégré : les modules incluent des pipelines Ingest Node pour parser les logs sans Logstash

Prérequis

Avant d’installer Filebeat sur ton serveur Linux, assure-toi d’avoir :

  • Un serveur Debian 11/12 ou Ubuntu 22.04/24.04 (les commandes fonctionnent aussi sur les versions antérieures)
  • Un cluster Elasticsearch accessible (version 7.x ou 8.x)
  • Optionnel : un serveur Kibana pour la visualisation
  • Un accès root ou sudo

Installer Filebeat sur Debian et Ubuntu

La méthode recommandée par Elastic est d’ajouter le dépôt APT officiel. Cela permet de recevoir les mises à jour automatiquement et d’éviter les problèmes de versions incompatibles avec Elasticsearch.

Méthode 1 : via le dépôt APT (recommandée)

Commence par importer la clé GPG d’Elastic et ajouter le dépôt :

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/elastic-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 filebeat

Cette méthode installe la dernière version stable de Filebeat 8.x. Pour installer une version 7.x, remplace 8.x par 7.x dans l’URL du dépôt.

Méthode 2 : via le paquet .deb

Si tu préfères installer une version spécifique sans ajouter le dépôt :

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-amd64.deb
sudo dpkg -i filebeat-8.17.0-amd64.deb

Vérifie que l’installation s’est bien passée :

filebeat version

Structure et configuration de filebeat.yml

Le fichier de configuration principal se trouve dans /etc/filebeat/filebeat.yml. C’est ici que tu définis les inputs (sources de logs), les outputs (destinations) et les paramètres généraux. Voici la structure des sections les plus importantes.

Section filebeat.inputs

Cette section définit les fichiers de logs à surveiller. Voici un exemple pour collecter les logs syslog et les logs d’authentification :

filebeat.inputs:
  - type: filestream
    id: syslog
    enabled: true
    paths:
      - /var/log/syslog
      - /var/log/messages
    fields:
      log_type: syslog
    fields_under_root: true

  - type: filestream
    id: auth-logs
    enabled: true
    paths:
      - /var/log/auth.log
    fields:
      log_type: auth

Note : depuis Filebeat 8.x, le type filestream remplace l’ancien type log qui est déprécié. Utilise toujours filestream pour les nouvelles configurations.

Section output.elasticsearch

Pour envoyer les logs directement vers Elasticsearch :

output.elasticsearch:
  hosts: ["https://elasticsearch.example.com:9200"]
  username: "elastic"
  password: "changeme"
  index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
  ssl:
    certificate_authorities: ["/etc/filebeat/ca.crt"]
    verification_mode: full

En Elastic 8.x avec la sécurité activée par défaut, le SSL est obligatoire. Copie le certificat CA de ton cluster Elasticsearch sur le serveur où Filebeat est installé.

Section output.logstash (alternative)

Si tu utilises Logstash comme intermédiaire pour enrichir ou transformer les logs :

output.logstash:
  hosts: ["logstash.example.com:5044"]
  ssl:
    certificate_authorities: ["/etc/filebeat/ca.crt"]

Important : tu ne peux définir qu’un seul output à la fois. Si output.elasticsearch est actif, commente ou supprime output.logstash et vice versa.

Section setup.kibana

Nécessaire uniquement pour charger les dashboards pré-intégrés :

setup.kibana:
  host: "https://kibana.example.com:5601"
  username: "elastic"
  password: "changeme"

Exemple complet de filebeat.yml

Voici un fichier filebeat.yml fonctionnel et commenté, prêt pour un serveur Debian :

# ====== Filebeat inputs ======
filebeat.inputs:
  - type: filestream
    id: syslog-input
    enabled: true
    paths:
      - /var/log/syslog

# ====== Modules ======
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

# ====== Elasticsearch output ======
output.elasticsearch:
  hosts: ["https://es01.example.com:9200"]
  username: "elastic"
  password: "changeme"
  ssl:
    certificate_authorities: ["/etc/filebeat/ca.crt"]

# ====== Kibana (pour les dashboards) ======
setup.kibana:
  host: "https://kibana.example.com:5601"

# ====== Logging ======
logging.level: info
logging.to_files: true
logging.files:
  path: /var/log/filebeat
  name: filebeat
  keepfiles: 7
  permissions: 0644

Collecter les logs syslog avec Filebeat

Le module system de Filebeat est le moyen le plus simple de collecter les logs syslog sur Linux. Il prend en charge /var/log/syslog (Debian/Ubuntu) et /var/log/messages (RHEL/CentOS), ainsi que les logs d’authentification /var/log/auth.log.

Pour activer le module system :

sudo filebeat modules enable system

Vérifie la configuration du module dans /etc/filebeat/modules.d/system.yml :

- module: system
  syslog:
    enabled: true
    var.paths: ["/var/log/syslog"]
  auth:
    enabled: true
    var.paths: ["/var/log/auth.log"]

Les chemins par défaut sont adaptés à Debian/Ubuntu. Sur CentOS ou RHEL, modifie var.paths pour pointer vers /var/log/messages et /var/log/secure.

Collecter les logs Apache avec Filebeat

Le module apache de Filebeat collecte les logs d’accès et d’erreur d’Apache HTTP Server. Il inclut des pipelines Ingest Node qui parsent automatiquement le format de log Apache commun et combiné.

sudo filebeat modules enable apache

Configuration du module dans /etc/filebeat/modules.d/apache.yml :

- module: apache
  access:
    enabled: true
    var.paths: ["/var/log/apache2/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/apache2/error.log*"]

Si Apache utilise un format de log personnalisé ou si les fichiers sont dans un répertoire non standard (par exemple /var/log/httpd/ sur CentOS), adapte les chemins en conséquence.

Démarrer Filebeat et vérifier le service

Une fois la configuration en place, charge les assets (index templates, pipelines, dashboards Kibana) puis démarre le service :

# Charger les index templates et pipelines dans Elasticsearch
sudo filebeat setup

# Démarrer le service
sudo systemctl start filebeat

# Activer le démarrage automatique
sudo systemctl enable filebeat

Vérifie que Filebeat tourne correctement :

# Statut du service
sudo systemctl status filebeat

# Vérifier les logs de Filebeat
sudo journalctl -u filebeat -f

# Tester la configuration sans démarrer
sudo filebeat test config

# Tester la connectivité vers Elasticsearch
sudo filebeat test output

La commande filebeat test config est particulièrement utile : elle valide la syntaxe YAML et signale les erreurs de configuration avant de démarrer le service.

Debug et erreurs fréquentes

Voici les problèmes les plus courants rencontrés lors du déploiement de Filebeat et comment les résoudre.

Erreur de connexion à Elasticsearch

ERROR [publisher_pipeline_output] pipeline/output.go:180 failed to connect: GET https://es01:9200: x509: certificate signed by unknown authority

Solution : copie le fichier CA d’Elasticsearch sur le serveur Filebeat et référence-le dans filebeat.yml :

output.elasticsearch:
  ssl:
    certificate_authorities: ["/etc/filebeat/ca.crt"]

Si tu es en environnement de test et que tu veux ignorer la vérification SSL (déconseillé en production) :

output.elasticsearch:
  ssl:
    verification_mode: none

Erreur YAML : mapping values are not allowed here

Cette erreur signifie que l’indentation du fichier filebeat.yml est incorrecte. YAML est très strict sur les espaces :

  • Utilise uniquement des espaces, jamais de tabulations
  • Respecte une indentation de 2 espaces par niveau
  • Vérifie qu’il n’y a pas d’espace avant les deux-points
# Valider la syntaxe avant de redémarrer
sudo filebeat test config -e

Filebeat ne collecte pas de nouveaux logs

Si Filebeat semble tourner mais n’envoie rien :

  1. Vérifie les permissions : Filebeat doit pouvoir lire les fichiers de logs. Par défaut, /var/log/syslog est lisible par le groupe adm.
  2. Vérifie le registre : Filebeat stocke sa position de lecture dans /var/lib/filebeat/registry/. Si tu veux relire un fichier depuis le début, supprime le registre et redémarre.
  3. Active le mode debug :
# Lancer en mode debug pour voir ce qui se passe
sudo filebeat -e -d "*"

Erreur « Failed to connect to backoff »

Filebeat ne peut pas joindre Elasticsearch ou Logstash. Vérifie :

  • Que le service Elasticsearch tourne : curl -k https://localhost:9200
  • Que le firewall autorise le port 9200 (ou 5044 pour Logstash)
  • Que les credentials dans filebeat.yml sont corrects
  • Que le hostname est résolvable depuis le serveur Filebeat

Conflit de version Filebeat / Elasticsearch

Elastic recommande d’utiliser la même version majeure pour tous les composants de la stack. Un Filebeat 7.x ne peut pas envoyer de données à un Elasticsearch 8.x sans configuration spécifique. Vérifie la compatibilité :

filebeat version
curl -k https://localhost:9200 | jq '.version.number'

Visualiser les logs dans Kibana

Une fois les logs collectés par Filebeat et indexés dans Elasticsearch, Kibana permet de les explorer et de créer des dashboards. Filebeat inclut des dashboards prêts à l’emploi pour chaque module.

Charger les dashboards Filebeat

Si tu n’as pas exécuté filebeat setup au démarrage, tu peux charger les dashboards séparément :

sudo filebeat setup --dashboards

Ensuite, dans Kibana, va dans Dashboard et cherche « Filebeat System » ou « Filebeat Apache » pour accéder aux vues pré-configurées.

Dashboard system logs

Le dashboard system de Filebeat affiche :

  • Les connexions SSH (réussies et échouées)
  • Les commandes sudo exécutées
  • L’activité des utilisateurs
  • Les événements système par processus et par host
  • Un timeline des événements

Tu peux filtrer par hostname, par plage horaire, par processus ou par utilisateur directement depuis la barre de recherche Kibana.

Dashboard Apache logs

Le dashboard Apache de Filebeat fournit :

  • Une carte mondiale de géolocalisation des requêtes par IP
  • Le taux de requêtes dans le temps
  • La répartition des codes de statut HTTP (200, 404, 500…)
  • Les URL les plus demandées
  • Les user-agents et navigateurs utilisés

Bonnes pratiques de déploiement

Pour tirer le meilleur parti de Filebeat en production :

  • Utilise les modules plutôt que des inputs manuels quand un module existe pour ton application — les pipelines de parsing sont maintenus par Elastic
  • Limite les logs collectés : ne collecte que ce qui est utile. Utilise exclude_lines et include_lines pour filtrer
  • Gère la rotation des logs : Filebeat suit les fichiers même après rotation (rename, truncate). Configure close_inactive et clean_inactive pour libérer les handles
  • Monitore Filebeat lui-même : active le monitoring interne ou exporte les métriques vers Elasticsearch
  • Sécurise les communications : utilise TLS entre Filebeat et Elasticsearch en production
  • Gère les déploiements avec Ansible : pour déployer Filebeat sur des dizaines de serveurs, un rôle Ansible avec template Jinja2 pour filebeat.yml est l’approche la plus maintenable

FAQ Filebeat

Clique sur une question pour afficher la réponse.

Quelle est la différence entre Filebeat et Logstash ?

Filebeat est un agent léger de collecte de logs, tandis que Logstash est un pipeline de traitement plus lourd. Filebeat consomme peu de ressources et est installé sur chaque serveur source. Logstash est généralement déployé sur un serveur dédié pour enrichir, transformer et router les données. Dans une architecture moderne, Filebeat collecte et envoie directement à Elasticsearch (avec des pipelines Ingest Node pour le parsing), réservant Logstash aux cas nécessitant des transformations complexes.

Filebeat peut-il envoyer des logs vers Logstash ?

Oui. Configure output.logstash dans filebeat.yml avec l’adresse et le port de Logstash (par défaut 5044). Côté Logstash, utilise l’input beats pour recevoir les données.

Comment mettre à jour Filebeat ?

Si tu as installé via le dépôt APT : sudo apt update && sudo apt upgrade filebeat. La configuration dans /etc/filebeat/filebeat.yml est préservée lors de la mise à jour. Relance filebeat setup si tu veux mettre à jour les index templates et dashboards.

Comment surveiller plusieurs types de logs sur le même serveur ?

Active plusieurs modules en même temps : sudo filebeat modules enable system apache nginx mysql. Tu peux aussi ajouter plusieurs blocs filebeat.inputs dans le fichier de configuration pour des fichiers de logs personnalisés.

Filebeat fonctionne-t-il sur des conteneurs Docker ?

Oui. Elastic fournit une image Docker officielle (docker.elastic.co/beats/filebeat). En environnement conteneurisé, Filebeat peut collecter les logs des conteneurs via l’autodiscover Docker ou Kubernetes, en montant le socket Docker ou les répertoires de logs.

Où se trouve le registre de Filebeat ?

Le registre est stocké dans /var/lib/filebeat/registry/. Il contient la position de lecture de chaque fichier surveillé. Si tu veux repartir de zéro (relire tous les logs), arrête Filebeat, supprime le contenu du registre, puis redémarre.

Conclusion

Filebeat est un outil incontournable pour centraliser les logs dans une infrastructure Linux. Léger, fiable et simple à configurer, il s’intègre nativement avec Elasticsearch et Kibana pour offrir une visibilité complète sur l’activité de tes serveurs. Que tu collectes des logs syslog, Apache, Nginx ou applicatifs, Filebeat simplifie la chaîne de collecte et te permet de te concentrer sur l’analyse plutôt que sur la plomberie.

Pour aller plus loin, consulte la documentation officielle de Filebeat ou découvre nos autres guides sur Elasticsearch et Kibana.

Besoin d’industrialiser ta collecte de logs ?

Si tu veux déployer Filebeat proprement sur plusieurs serveurs Linux, standardiser la configuration et fiabiliser l’envoi vers Elasticsearch/Kibana, contacte Linux-Man. Je peux t’aider à industrialiser la stack et à éviter les configs fragiles bricolées à la main.

Laisser un commentaire