This article is available in French.
1. Routage #
Quelles données vont où.
Match et tags #
match: kube.*: joker sur le tag.match_regex: ^kube\.(api|web)$: expression régulière.match: *: tout (pratique pour une archive).
Erreur Courante : Un enregistrement qu'aucun output ne correspond est simplement abandonné : vérifiez vos tags avec une sortie stdout temporaire.2. Les principaux outputs #
Vers les backends courants.
Exemples #
pipeline:
outputs:
- name: loki
match: kube.*
host: loki.monitoring.svc
port: 3100
labels: job=fluent-bit, namespace=$kubernetes['namespace_name'], app=$kubernetes['labels']['app']
line_format: json
- name: es # Elasticsearch ou OpenSearch (name: opensearch)
match: app.*
host: elasticsearch
port: 9200
logstash_format: on
logstash_prefix: app
suppress_type_name: on
tls: on
http_user: fluentbit
http_passwd: ${ES_PASSWORD}
- name: opentelemetry
match: otel.*
host: otel-collector
port: 4318
logs_uri: /v1/logs
- name: s3
match: '*'
bucket: archives-logs
region: eu-west-3
total_file_size: 100M
upload_timeout: 10m
compression: gzipAutres sorties #
| Output | Usage |
|---|---|
kafka | File d'attente durable avant traitement |
forward | Vers un agrégateur Fluent Bit ou Fluentd |
http | Toute API HTTP (JSON, NDJSON) |
prometheus_exporter, prometheus_remote_write | Métriques |
stdout | Débogage |
3. Fiabilité de l'envoi #
Ne pas perdre, ne pas saturer.
Réglages #
- name: loki
match: kube.*
host: loki
retry_limit: no_limits # ou un nombre ; False = pas de réessai
workers: 2 # envois en parallèle
storage.total_limit_size: 5G # plafond du tampon disque de cet output
compress: gzip
tls: on
tls.verify: on- Les réessais suivent un délai exponentiel ; un chunk abandonné après
retry_limitest perdu. storage.total_limit_sizeévite qu'une destination en panne remplisse le disque du nœud : les plus anciens chunks sont alors supprimés.- Surveillez
fluentbit_output_retries_failed_totaletfluentbit_output_dropped_records_totalsur le port 2020.
curl -s localhost:2020/api/v2/metrics/prometheus | grep -E 'output_(errors|retries|dropped)'My progress
Sign in to track your progress and take notes. Sign in
Recommended Articles
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, rota...
Fluent Bit : pipeline, configuration et plugins essentiels
Les concepts de Fluent Bit (inputs, parsers, filters, tags et match, buffer, outputs), la configu...
Fluent Bit : parsers et filters, structurer et transformer les logs
Structurer et transformer les logs dans Fluent Bit : parsers (json, regex, logfmt, ltsv), parsers...
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 colle...
Bonnes pratiques de collecte de logs avec Fluent Bit et Vector
Check-list de production pour la collecte de logs : structure, filtrage à la source, masquage, ta...
Vector : les sources en détail
Les sources de Vector : fichiers, logs Kubernetes, journald, syslog, sockets, HTTP, OpenTelemetry...
Fluent Bit sur Kubernetes : DaemonSet, multiline, tampon et supervision
Déployer Fluent Bit sur Kubernetes avec Helm, enrichir avec le filtre kubernetes, gérer les logs ...
Vector : les sinks en détail (destinations, lots, tampons et réessais)
Envoyer les événements de Vector : sinks Loki, Elasticsearch, S3, Kafka, OpenTelemetry, Prometheu...
Fluent Bit ou Vector ? Choisir, combiner et migrer
Comparer Fluent Bit et Vector (performances, transformations, écosystème, gouvernance), les combi...