RousselTMLEARNING

Article · Fluent Bit : de la découverte à l'expertise

Les inputs (entrées) en détail

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.

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

Mon suivi

  • ⏱ Durée estimée : ≈ 8 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Poser une question

Articles recommandés

Collecter des logs vers Loki : Alloy, Promtail, Docker et OpenTelemetry

Envoyer des logs vers Loki : Grafana Alloy, Promtail, driver Docker, OTLP, bons labels, parsing e...

Vector : les transforms en détail (remap et VRL, route, filter, réduction et métriques)

Transformer les événements dans Vector : remap et le langage VRL (analyse, enrichissement, gestio...

Les logs avec OpenTelemetry : modèle de données, appenders, corrélation et collecte

Maîtriser le signal log : modèle de données LogRecord, Logs Bridge API et appenders (Logback, Log...

Logs dans Datadog : collecte, pipelines, index et maîtrise du volume

Collecter les logs avec l'agent, les structurer avec pipelines et processeurs (grok), utiliser fa...

Grafana Alloy : Collecte et Transformation de Télémétrie

Apprenez à utiliser Grafana Alloy pour collecter, transformer et acheminer logs, métriques et tra...

Transformer avec VRL et tester ses pipelines Vector

Le langage VRL (Vector Remap Language) : analyse de logs (JSON, regex, syslog), gestion des erreu...

Grafana Alloy et les logs : collecter et envoyer vers Loki

Découvrez comment configurer Grafana Alloy pour lire des fichiers de logs, journald ou des flux r...

Ingestion Elasticsearch : Bulk API, ingest pipelines, enrich et reindex

Ingérer et transformer des données dans Elasticsearch : Bulk API, ingest pipelines et processeurs...

Aide-mémoire kubectl : les commandes essentielles

Toutes les commandes kubectl utiles au quotidien : contextes, ressources, logs, exec, port-forwar...

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 !