Replies: 2 comments 1 reply
-
|
Adjusting the retry limits on the output would likely prevent it blocking, I'm guessing at the moment you have defaults of retry forever on both outputs? |
Beta Was this translation helpful? Give feedback.
-
|
Your understanding is correct — Fluent Bit uses a single shared chunk buffer per input, and backpressure propagates upstream when any output's retry queue fills. This is a known architectural constraint, not a misconfiguration. The retry limit suggestion from @patrick-stephens helps prevent indefinite blocking, but it trades blocking for data loss — once retries are exhausted, those events are dropped. Whether that's acceptable depends on your requirements for CloudWatch vs OpenAPM. Practical options for your FireLens setup: 1. Set asymmetric retry limits per output [OUTPUT]
Name cloudwatch_logs
Retry_Limit False # retry forever for primary
[OUTPUT]
Name http
Match *
# OpenAPM endpoint
Retry_Limit 3 # drop after 3 retries, don't block primaryThis lets OpenAPM fail fast while CloudWatch continues retrying. 2. Use separate Fluent Bit instances per output 3. Add a filesystem buffer with output-level limits [OUTPUT]
Name cloudwatch_logs
storage.type filesystem
[OUTPUT]
Name http
storage.type filesystemWith filesystem buffering, each output gets its own queue on disk. Backpressure still applies per-output rather than globally, reducing the chance of one slow output blocking the other. You'll need to tune The fundamental constraint For what it's worth, this shared-buffer backpressure coupling is one of the harder operational problems in C-based log agents — it's a consequence of the single-threaded event loop model. When building WarpParse we made per-sink queues independent by default, so a slow sink can only affect its own throughput. Happy to share more detail if useful. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi,
I’m running Fluent Bit as a FireLens sidecar on ECS, replacing the CloudWatch Agent.
Setup
Issue
When one output becomes unavailable:
Understanding
From the docs, it seems Fluent Bit has a single shared buffer per input, and backpressure is applied at the input level.
So if one output is blocked and the buffer is full, all outputs are affected.
Is this correct?
Question
Is there any supported way to:
Thanks.
Beta Was this translation helpful? Give feedback.
All reactions