用 Filebeat 和用 Logstash 推送日志到 Elasticsearch 有什么区别?
Filebeat 轻量采集转发(资源占用小、解析能力弱),Logstash 功能全面(解析/转换/富化强、资源占用大)。典型架构是 Filebeat 采集 + Logstash 处理 + ES 存储。本文讲清两者分工与选型。
一句话分工:Filebeat 是轻量采集器(读文件、转发,几乎不做处理);Logstash 是重型管道(grok 解析、字段增删、富化、多路输出)。资源紧张的采集端用 Filebeat,需要复杂清洗的中间层用 Logstash。
对比表
| 维度 | Filebeat | Logstash |
|---|---|---|
| 定位 | 轻量日志采集器 | 数据处理管道 |
| 资源占用 | 极小(Go,几十 MB) | 大(JVM,数百 MB 起) |
| 解析能力 | 基础(dissect/grok 处理器) | 完整(grok/mutate/ruby…) |
| 背压处理 | 有(对下游反压) | 有(队列) |
| 多输出 | 单输出 | 多输出 |
典型组合
Filebeat(每台机器,采集) → Logstash(集中清洗) → ES → Kibana
流量小、日志结构化良好(JSON)时 Filebeat 直连 ES 也完全可行。
观测云对照
观测云 DataKit 一个采集器同时覆盖两者职责:轻量采集 + 内置 Pipeline 清洗(grok/脱敏/富化),直传云端——不再需要 Filebeat + Logstash 双层结构。
常见问题(FAQ)
Q:Filebeat 能完全替代 Logstash 吗? JSON 日志等无需复杂处理的场景可以;需要多路输出、重度转换时仍需 Logstash 或等价层。
Q:Filebeat→Logstash 之间会丢吗? 不会,Filebeat 有 ACK 与重发机制。