RousselTMLEARNING

Observabilité

Fluent Bit : les inputs (entrées) du pipeline en détail

Tout sur les inputs de Fluent Bit : rôle des tags, lecture de fichiers avec tail (positions, rotation, multiligne), journald, syslog, forward, OpenTelemetry, HTTP, métriques de l'hôte, et maîtrise de la mémoire avec mem_buf_limit et le stockage sur disque.

1. Le rôle des inputs #

La porte d'entrée des données.

Principe #

Pipeline Fluent Bit
Les inputs produisent des enregistrements (horodatage + champs) regroupés en chunks.

Un input collecte des données : il lit un fichier, écoute un port, interroge le système ou reçoit un protocole. Chaque enregistrement reçoit un tag (par exemple kube.var.log.containers.api-xyz.log) : c'est lui que les filtres et les outputs utilisent, via Match, pour décider de ce qu'ils traitent.

FamilleInputsUsage
FichierstailLogs applicatifs, conteneurs (/var/log/containers)
Systèmesystemd, kmsgJournal systemd, noyau
Réseausyslog, tcp, udp, httpÉquipements réseau, applications qui poussent
Protocoles d'agentsforward, opentelemetryFluentd/Fluent Bit en chaîne, SDK OpenTelemetry (OTLP)
Métriquesnode_exporter_metrics, prometheus_scrape, cpu, memMétriques de l'hôte et des applications
Kuberneteskubernetes_eventsÉvénements du cluster

2. Lire des fichiers avec tail #

L'input le plus utilisé.

Configuration #

Fonctionnement de l'input tail
Sans fichier DB, un redémarrage relit tout depuis la fin ou le début du fichier.
pipeline:
  inputs:
    - name: tail
      tag: app.*
      path: /var/log/app/*.log
      exclude_path: /var/log/app/*.gz
      db: /var/lib/fluent-bit/tail-app.db      # positions de lecture
      read_from_head: false                    # nouveau fichier : partir de la fin
      refresh_interval: 10                     # recherche de nouveaux fichiers (s)
      rotate_wait: 30                          # continuer à lire l'ancien fichier après rotation (s)
      skip_long_lines: on
      multiline.parser: docker, cri, java      # recoller les lignes d'une exception
      mem_buf_limit: 50MB
      storage.type: filesystem

Points d'attention #

  • path accepte les jokers ; le tag avec * est complété par le chemin du fichier (points à la place des barres).
  • Le multiligne se règle dès l'input : docker et cri reconstituent les lignes coupées par le runtime ; java, python, go regroupent les traces de pile.
  • Le fichier DB doit être sur un volume persistant (hostPath sur Kubernetes).

3. Autres inputs utiles #

Réseau, journald, OpenTelemetry.

Exemples #

pipeline:
  inputs:
    - name: systemd
      tag: host.journal
      systemd_filter: _SYSTEMD_UNIT=nginx.service
      read_from_tail: on
    - name: syslog
      mode: udp
      listen: 0.0.0.0
      port: 5140
      parser: syslog-rfc5424
    - name: opentelemetry          # reçoit logs, métriques et traces OTLP/HTTP
      listen: 0.0.0.0
      port: 4318
    - name: forward                # depuis d'autres agents Fluent Bit ou Fluentd
      listen: 0.0.0.0
      port: 24224
    - name: node_exporter_metrics
      tag: host.metrics
      scrape_interval: 30

Mémoire et contre-pression #

Quand une sortie ralentit, les données s'accumulent. mem_buf_limit borne la mémoire d'un input : une fois atteint, l'input est mis en pause (risque de perte pour les inputs réseau). Avec storage.type: filesystem, les chunks débordent sur disque et rien n'est perdu.

service:
  storage.path: /var/lib/fluent-bit/buffer
  storage.sync: normal
  storage.backlog.mem_limit: 50M
Bonne Pratique : Pour les inputs réseau (syslog, http, forward), le tampon disque est indispensable : un client qui envoie pendant une pause perd ses messages.

Articles liés

Fluent Bit : parsers et filters, structurer et transformer les logs

Structurer et transformer les logs dans Fluent Bit : parsers (json, regex, logfmt, ltsv), parsers multilignes…

Fluent Bit : les outputs (sorties), routage et fiabilité de l'envoi

Envoyer les données de Fluent Bit : routage par Match et Match_Regex, sorties Loki, Elasticsearch/OpenSearch,…

Collecteurs de logs légers : Fluent Bit, Vector et les autres

Pourquoi un collecteur de logs, ce qui distingue les agents légers (Fluent Bit, Vector) des collecteurs histo…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !