Filebeat
En une phrase : Filebeat collecte des ligne de texte et les publie.
Traduction : Filebeat évoque un électrocardiogramme pour fichier. Je le traduirais électrofichiogramme.
Il entre dans la catégorie des log shipper et log management tool. Il concurrence Logstash sans le remplacer totalement, et Fluentd. Il s’intègre dans la suite ELK.
Filebeat est un projet open-source écrit en Go. Filebeat est populaire.
Filebeat publie sur Elasticsearch. Mais il peut aussi écrire dans Kafka ou Redis. Filebeat peut aussi s’interfacer avec Logstash, pour transformer les logs.
Vocabulaire
- harvester (collecteur) : est responsable de la lecture d’une source (en général un fichier) et d’envoyer chaque ligne à une output
- input : trouve toutes les sources à lire et lance un harvester pour chacune d’elles.
- event : une information parsée, prête à publier
- processor : traite un event (filtre, enrichissement)
- ingest pipeline : suite de traitements appliquées à chaque event.
- module : un module est une recette prête à l’emploi pour harvester et parser certains formats de logs bien connus.
- output : responsable de la publication d’un évênement.
Généralités
Filebeat est un démon.
Filebeat gère un état qui tracke chaque fichier. Au redémarrage, Filebeat lit le dernier état et reprend là où il s’était arrêté.
Filebeat garantit faiblement que chaque évênement a été envoyé au moins une fois. Faiblement car il y a des cas où suite à la manipulation de fichiers sur disque, certaines lignes ne sont pas traitées.
Inputs
Filebeat harveste généralement des fichiers de logs, mais il peut harvester plein d’autres choses (kafka, TCP, …)
Chaque input peut filter ou enrichir la donnée via des processors.
Filebeat a une fonctionnalité d’autodiscovery qui écoute des évênements système et peut créer un nouvel input (ou un module) en réaction à cet évênement. Par exemple détecter qu’un nouveau conteneur Docker a été lancé et l’harvester automagiquement.
Modules
Un module contient une configuration d’input prête à l’emploi.
Par exemple le module Nginx comprend son format de log; l’url et le status de la requête HTTP sont indexés dans des champs différents.
Elasticsearch
Filebeat écrit les logs dans un index. Il a une configuration par défaut qui crée l’index dont le cycle de vie est géré par Elasticsearch (Index Lifecycle Management). Il est possible de tout personnaliser.
Kibana
Les logs stockés dans Elasticsearch sont consultables dans Kibana.