Use them to collect, parse, enrich, route, or forward logs before the records reach the place where people read them.
Fluent Bit vs Fluentd for Log Collection
Fluent Bit and Fluentd are both log collectors from the Fluent ecosystem. Fluent Bit is commonly used when collection should stay lighter. Fluentd is commonly used when routing and processing at the collector layer need more room. Either can forward records into Fluxtail receivers and streams.
It is often selected for node, edge, container, or Kubernetes collection where low resource use matters.
It is often selected when the collector layer needs more plugin-driven routing, buffering, or transformation.
The destination stream is easier to read when both collectors emit stable service, source, severity, and request fields.
What both collectors do
Both tools can collect logs, enrich records, route output, and forward data to another destination.
Collect and forward records
Use either collector to move logs from local files, containers, nodes, services, or supported inputs into a destination.
Attach useful context
Collectors should preserve or add fields such as host, service, source, severity, namespace, pod, and request ID.
Send output to a log reader
The collector does not need to be the place where people read rows, build alerts, or inspect repeated errors.
Compare the collector role, then keep the output readable
The collector choice affects resource use and routing complexity. The output should still land in a stream that is easy to filter and read.
1[OUTPUT]2 Name http3 Match app.*4 Host ${FLUXTAIL_HOST}5 Port ${FLUXTAIL_PORT}6 URI /log7 Header X-API-Key ${FLUXTAIL_API_KEY}8 Format json
Use the receiver values from Fluxtail and keep the emitted record shape stable.
1<match app.**>2 @type http3 endpoint http://${FLUXTAIL_HOST}:${FLUXTAIL_PORT}/log4 headers {"X-API-Key":"${FLUXTAIL_API_KEY}"}5 <format>6 @type json7 </format>8</match>
This is an original minimal shape for comparison, not a full production Fluentd config.
2026-04-24T14:21:09Z ERROR checkout-api prod host=api-03 request_id=req-9f2c checkout timeout after 3 retries
The reader should not need to care which collector forwarded the row when the fields are consistent.
| Topic | Fluent Bit | Fluentd | Fluxtail receiver and stream |
|---|---|---|---|
| Common role | Lightweight collection and forwarding | Collection with more routing and processing room | Receives forwarded records |
| Typical placement | Node, container, edge, or Kubernetes DaemonSet | Aggregator, router, or more complex collector layer | Named stream for reading and filtering |
| Fields to preserve | Service, source, severity, host, namespace, pod, request ID | Service, source, severity, host, namespace, pod, request ID | Same fields used for filters, facets, alerts, and AI checks |
| Reading logs | Not usually the final reading surface | Not usually the final reading surface | Live tail, filters, facets, histograms, alerts, MCP diagnostics, AI chat |
When Fluent Bit is usually enough
Fluent Bit is commonly a good fit when the job is collection, enrichment, and forwarding with a smaller runtime footprint.
Kubernetes node collection
Use Fluent Bit when a DaemonSet-style collector can attach Kubernetes metadata and forward records onward.
Straightforward forwarding
Use Fluent Bit when the record only needs light parsing, enrichment, and routing before it reaches Fluxtail.
Resource-sensitive sources
Use Fluent Bit when CPU and memory use near the source are important constraints.
Compare the collector role, then keep the output readable
The collector choice affects resource use and routing complexity. The output should still land in a stream that is easy to filter and read.
1[OUTPUT]2 Name http3 Match app.*4 Host ${FLUXTAIL_HOST}5 Port ${FLUXTAIL_PORT}6 URI /log7 Header X-API-Key ${FLUXTAIL_API_KEY}8 Format json
Use the receiver values from Fluxtail and keep the emitted record shape stable.
1<match app.**>2 @type http3 endpoint http://${FLUXTAIL_HOST}:${FLUXTAIL_PORT}/log4 headers {"X-API-Key":"${FLUXTAIL_API_KEY}"}5 <format>6 @type json7 </format>8</match>
This is an original minimal shape for comparison, not a full production Fluentd config.
2026-04-24T14:21:09Z ERROR checkout-api prod host=api-03 request_id=req-9f2c checkout timeout after 3 retries
The reader should not need to care which collector forwarded the row when the fields are consistent.
| Topic | Fluent Bit | Fluentd | Fluxtail receiver and stream |
|---|---|---|---|
| Common role | Lightweight collection and forwarding | Collection with more routing and processing room | Receives forwarded records |
| Typical placement | Node, container, edge, or Kubernetes DaemonSet | Aggregator, router, or more complex collector layer | Named stream for reading and filtering |
| Fields to preserve | Service, source, severity, host, namespace, pod, request ID | Service, source, severity, host, namespace, pod, request ID | Same fields used for filters, facets, alerts, and AI checks |
| Reading logs | Not usually the final reading surface | Not usually the final reading surface | Live tail, filters, facets, histograms, alerts, MCP diagnostics, AI chat |
When Fluentd may be worth the larger collector layer
Fluentd may fit better when collection also needs more routing, buffering, plugin use, or record transformation before forwarding.
More routing logic
Use Fluentd when records need more conditional routing or multiple destinations before final storage.
More processing at the collector layer
Use Fluentd when transformation, buffering, or plugin behavior is a larger part of the setup.
Central collector topology
Use Fluentd when the collector layer acts more like a routing service than a lightweight node agent.
Compare the collector role, then keep the output readable
The collector choice affects resource use and routing complexity. The output should still land in a stream that is easy to filter and read.
1[OUTPUT]2 Name http3 Match app.*4 Host ${FLUXTAIL_HOST}5 Port ${FLUXTAIL_PORT}6 URI /log7 Header X-API-Key ${FLUXTAIL_API_KEY}8 Format json
Use the receiver values from Fluxtail and keep the emitted record shape stable.
1<match app.**>2 @type http3 endpoint http://${FLUXTAIL_HOST}:${FLUXTAIL_PORT}/log4 headers {"X-API-Key":"${FLUXTAIL_API_KEY}"}5 <format>6 @type json7 </format>8</match>
This is an original minimal shape for comparison, not a full production Fluentd config.
2026-04-24T14:21:09Z ERROR checkout-api prod host=api-03 request_id=req-9f2c checkout timeout after 3 retries
The reader should not need to care which collector forwarded the row when the fields are consistent.
| Topic | Fluent Bit | Fluentd | Fluxtail receiver and stream |
|---|---|---|---|
| Common role | Lightweight collection and forwarding | Collection with more routing and processing room | Receives forwarded records |
| Typical placement | Node, container, edge, or Kubernetes DaemonSet | Aggregator, router, or more complex collector layer | Named stream for reading and filtering |
| Fields to preserve | Service, source, severity, host, namespace, pod, request ID | Service, source, severity, host, namespace, pod, request ID | Same fields used for filters, facets, alerts, and AI checks |
| Reading logs | Not usually the final reading surface | Not usually the final reading surface | Live tail, filters, facets, histograms, alerts, MCP diagnostics, AI chat |
What to keep consistent before sending logs
Changing collectors should not break the stream shape that people use for search and alerts.
Use stable field names
Keep service, host, source, severity, environment, request ID, trace ID, namespace, and pod fields stable across collectors.
Keep the message readable
A structured record is still harder to use if the human-readable message is buried or rewritten into an unclear string.
Test one stream first
Forward a small source through the collector and confirm that Fluxtail live tail, filters, facets, histograms, and alerts see the expected fields.
Compare the collector role, then keep the output readable
The collector choice affects resource use and routing complexity. The output should still land in a stream that is easy to filter and read.
1[OUTPUT]2 Name http3 Match app.*4 Host ${FLUXTAIL_HOST}5 Port ${FLUXTAIL_PORT}6 URI /log7 Header X-API-Key ${FLUXTAIL_API_KEY}8 Format json
Use the receiver values from Fluxtail and keep the emitted record shape stable.
1<match app.**>2 @type http3 endpoint http://${FLUXTAIL_HOST}:${FLUXTAIL_PORT}/log4 headers {"X-API-Key":"${FLUXTAIL_API_KEY}"}5 <format>6 @type json7 </format>8</match>
This is an original minimal shape for comparison, not a full production Fluentd config.
2026-04-24T14:21:09Z ERROR checkout-api prod host=api-03 request_id=req-9f2c checkout timeout after 3 retries
The reader should not need to care which collector forwarded the row when the fields are consistent.
| Topic | Fluent Bit | Fluentd | Fluxtail receiver and stream |
|---|---|---|---|
| Common role | Lightweight collection and forwarding | Collection with more routing and processing room | Receives forwarded records |
| Typical placement | Node, container, edge, or Kubernetes DaemonSet | Aggregator, router, or more complex collector layer | Named stream for reading and filtering |
| Fields to preserve | Service, source, severity, host, namespace, pod, request ID | Service, source, severity, host, namespace, pod, request ID | Same fields used for filters, facets, alerts, and AI checks |
| Reading logs | Not usually the final reading surface | Not usually the final reading surface | Live tail, filters, facets, histograms, alerts, MCP diagnostics, AI chat |
Read either collector output in Fluxtail
Use the collector for collection and routing. Use Fluxtail for the shared stream, live reading, filtering, alerts, MCP diagnostics, and AI chat.
Create a receiver for the source
Use one receiver for the collector output you want to identify, secure, and troubleshoot separately.
Send records into named streams
Route by service, namespace, environment, source, or cluster so rows are readable after forwarding.
Verify before increasing volume
Confirm that one service lands with useful fields before forwarding every host, node, or namespace.
Compare the collector role, then keep the output readable
The collector choice affects resource use and routing complexity. The output should still land in a stream that is easy to filter and read.
1[OUTPUT]2 Name http3 Match app.*4 Host ${FLUXTAIL_HOST}5 Port ${FLUXTAIL_PORT}6 URI /log7 Header X-API-Key ${FLUXTAIL_API_KEY}8 Format json
Use the receiver values from Fluxtail and keep the emitted record shape stable.
1<match app.**>2 @type http3 endpoint http://${FLUXTAIL_HOST}:${FLUXTAIL_PORT}/log4 headers {"X-API-Key":"${FLUXTAIL_API_KEY}"}5 <format>6 @type json7 </format>8</match>
This is an original minimal shape for comparison, not a full production Fluentd config.
2026-04-24T14:21:09Z ERROR checkout-api prod host=api-03 request_id=req-9f2c checkout timeout after 3 retries
The reader should not need to care which collector forwarded the row when the fields are consistent.
| Topic | Fluent Bit | Fluentd | Fluxtail receiver and stream |
|---|---|---|---|
| Common role | Lightweight collection and forwarding | Collection with more routing and processing room | Receives forwarded records |
| Typical placement | Node, container, edge, or Kubernetes DaemonSet | Aggregator, router, or more complex collector layer | Named stream for reading and filtering |
| Fields to preserve | Service, source, severity, host, namespace, pod, request ID | Service, source, severity, host, namespace, pod, request ID | Same fields used for filters, facets, alerts, and AI checks |
| Reading logs | Not usually the final reading surface | Not usually the final reading surface | Live tail, filters, facets, histograms, alerts, MCP diagnostics, AI chat |
Compare the collector role, then keep the output readable
The collector choice affects resource use and routing complexity. The output should still land in a stream that is easy to filter and read.
1[OUTPUT]2 Name http3 Match app.*4 Host ${FLUXTAIL_HOST}5 Port ${FLUXTAIL_PORT}6 URI /log7 Header X-API-Key ${FLUXTAIL_API_KEY}8 Format json
Use the receiver values from Fluxtail and keep the emitted record shape stable.
1<match app.**>2 @type http3 endpoint http://${FLUXTAIL_HOST}:${FLUXTAIL_PORT}/log4 headers {"X-API-Key":"${FLUXTAIL_API_KEY}"}5 <format>6 @type json7 </format>8</match>
This is an original minimal shape for comparison, not a full production Fluentd config.
2026-04-24T14:21:09Z ERROR checkout-api prod host=api-03 request_id=req-9f2c checkout timeout after 3 retries
The reader should not need to care which collector forwarded the row when the fields are consistent.
| Topic | Fluent Bit | Fluentd | Fluxtail receiver and stream |
|---|---|---|---|
| Common role | Lightweight collection and forwarding | Collection with more routing and processing room | Receives forwarded records |
| Typical placement | Node, container, edge, or Kubernetes DaemonSet | Aggregator, router, or more complex collector layer | Named stream for reading and filtering |
| Fields to preserve | Service, source, severity, host, namespace, pod, request ID | Service, source, severity, host, namespace, pod, request ID | Same fields used for filters, facets, alerts, and AI checks |
| Reading logs | Not usually the final reading surface | Not usually the final reading surface | Live tail, filters, facets, histograms, alerts, MCP diagnostics, AI chat |
Related pages
Use Fluent Bit for Kubernetes log collection, forward records to a Fluxtail receiver, and keep namespace, pod, container, service, and severity fields readable.
Practical guide to Kubernetes logging: what metadata to keep, how collection paths work, and how Fluxtail keeps cluster logs searchable.
Compare Kubernetes logging tools by layer: collectors, storage and query stacks, cloud logging, and log management destinations for Kubernetes logs.
Learn how log aggregation works across apps, hosts, syslog, containers, Kubernetes, OTLP, GELF, and collectors.
Pricing is coming soon while Fluxtail plan names, limits, retention, and usage tiers are finalized.
Send one real source and read the logs
The fastest check is to point one real source at Fluxtail and see whether the resulting stream is easier to read.
Create a receiver, send one source, and inspect the first stream.