Fluentd's defaults get you collecting logs in an afternoon, then hand you a set of cliff-edges that most teams only discover during an incident — usually the one where they need the logs that were lost.
The defaults work. Until a destination slows down, chunks pile up in a buffer that often defaults to memory, and the worker is OOM-killed with every buffered log gone. Until that buffer hits total_limit_size and — with overflow_action at its throw_exception default — new events are dropped silently, no counter you are watching moving. Until a log line stops matching your parser, Fluentd logs pattern not matched, and quietly discards it. Until a destination flaps, the log fills with failed to flush the buffer, retries back off to thirty minutes out, and the pipeline is effectively dead while still 'retrying'. Until in_tail runs the host out of descriptors with too many open files and stops watching new logs without a word.
These guides are written for engineers who already run Fluentd, not for people learning what a log router is. The goal is the mental model of how events actually move from input to output, why 'the process is up' is not 'logs are flowing', the failure patterns that keep recurring — backpressure, silent drops, OOM, poison pills, rotation loss — the monitoring story that catches them before a postmortem needs the data you dropped, and the runbooks you wish someone had handed you before your last gap in the logs.