Hi everyone,
I’ve been working with the Elastic Stack for several years and recently started exploring Fleet Server and Elastic Agent. While I appreciate the modern approach and prebuilt integrations, I’m struggling with several architectural limitations compared to my traditional setup.
My previous setup
I used this architecture:
Filebeat / Winlogbeat → Redis → Logstash → Elasticsearch
This gave me:
- Decoupling and buffering via Redis (safe during outages),
- Flexible parsing and routing in Logstash,
- Multi-destination outputs from Logstash (e.g., Elasticsearch and external SIEMs),
- Full control over pipelines and index templates.
Current challenges with Fleet + Elastic Agent
Now, everything seems designed to push logs directly into Elasticsearch ingest nodes. This brings some issues:
1. Loss of output flexibility
- Elastic Agent doesn’t support multiple outputs
In my previous setup, I could:
• Fork specific logs to an external SIEM or store raw logs elsewhere.
• Do that easily in Logstash, not possible with Elastic Agent alone.
2. Hard to use prebuilt integrations when logs don’t go directly to ES
- Elastic’s integrations include dashboards, ingest pipelines, and index templates.
- But they only work if the agent sends data directly to Elasticsearch.
- If logs go through Logstash, I lose access to:
- the pipeline definitions,
- field mappings,
- dashboards.
Yes, I know there are unofficial tools to convert ingest pipelines to Logstash configs — but conversions often end with errors. Manually exporting mappings and maintaining them is time-consuming and fragile.
3. Ingest Node vs. Logstash: limited capabilities
- ES Ingest pipelines are fine for simple parsing, but:
- Not as flexible as Logstash (e.g., conditional logic, branching).
- Harder to extend and debug.
- No easy way to test them incrementally.
So for custom application logs, I still prefer Logstash.
4. Lack of reliable buffering with Elastic Agent
This is the biggest issue for me.
In the old model:
- Redis buffered all events.
- I could safely take Logstash or ES offline temporarily.
Now
- In the current Fleet + Elastic Agent setup, I’m unsure what happens if Elasticsearch is temporarily unavailable.
- Specifically, I’d like to understand:
- Is there any disk-based buffering, or is everything kept in memory?
- What limits or settings define how much data the agent can buffer (e.g. size, time)?
- In the past, I used Redis as a buffer, which worked well for short downtimes and traffic spikes.
- I couldn’t find clear documentation or guidance on how Elastic Agent handles this kind of resilience today.
If events are lost during an outage, that’s a dealbreaker for production.
My current thoughts
-
For standard logs (e.g. Windows event logs), Fleet + Elasticsearch ingest nodes work well thanks to built-in integrations.
-
However, I lose the ability to forward logs to multiple outputs (e.g. SIEM, archive).
-
I don’t need to route metrics, but I do need to branch system logs in some environments.
-
Elastic Agent and Filebeat support only one output, so even basic use cases become limiting.
-
Running multiple agents per host just to overcome this is confusing and hard to maintain.
-
There’s no buffering layer like Redis between the agent and Elasticsearch — which previously helped handle:
-
short downtimes (e.g. during maintenance),
-
unexpected failures,
-
and log spikes.
My questions
What would be the recommended architecture if I want to:
-
Use Fleet / Elastic Agent for standard logs and integrations,
-
Use Logstash for parsing custom logs and routing to multiple destinations,
-
Keep reliable buffering (e.g., Redis or disk-based queue),
-
Prevent log spikes from directly impacting Elasticsearch cluster performance,
-
And still be able to forward selected logs (e.g., system logs collected via Elastic Agent) to additional destinations, not just Elasticsearch.
Any guidance or insight would be greatly appreciated.
Thanks!