Skip to content

Fluent Bit

This guide configures logs. Replace YOUR_INGEST_KEY with your key on your server, never in a public example.

Choose the multiline parser for your actual format. The tail source wraps unparsed lines in log; the adapter recognizes that field. Mount storage.path persistently and bound disk use. Fluent Bit forward protocol is not an HTTP ingest format; use this HTTP output.

service:
flush: 1
log_level: info
storage.path: /var/lib/fluent-bit/storage
pipeline:
inputs:
- name: tail
path: /var/log/my-app/*.log
tag: app
read_from_head: false
multiline.parser: python, java
storage.type: filesystem
outputs:
- name: http
match: '*'
host: otlp.siteqwality.com
port: 443
tls: on
tls.verify: on
uri: /ingest
format: json
header:
- "Authorization Bearer YOUR_INGEST_KEY"
- "X-Service my-service"
- "X-Env production"
retry_limit: no_limits

Write a fresh line to the configured file. Check exporter errors and Logs. Keep batches below 4,000,000 wire bytes; a record can be truncated by per-record limits.

Terminal window
fluent-bit --dry-run --config fluent-bit.yaml
fluent-bit --config fluent-bit.yaml

Open Logs, Traces or Metrics. New data usually shows up within a minute, and a page that says it is waiting for data switches to your data on its own. Nothing arriving? See what each status code means in failure handling.

Store the key in your platform secret mechanism, rotate it when exposed and remove test keys. Set a stable service.name and deployment.environment.name; avoid user IDs or unbounded values in metric labels. Prefer a persistent queue, bounded retries and exporter failure monitoring. Review redaction and processors before increasing traffic.