Filebeat 应该直连 Elasticsearch 还是经过 Logstash?
日志结构化良好(JSON)或只需轻处理时 Filebeat 直连 ES 最简单;需要复杂解析、多路输出、聚合富化时加 Logstash 中间层。本文给出两种架构的适用场景与对比。
判断标准一句话:你的日志需要在入库前"大改"吗?不需要(JSON 日志、简单切分)就 Filebeat 直连 ES;需要 Logstash 特有插件、外部富化或多目的地路由时再加 Logstash;grok 本身也可在 ES ingest pipeline 执行。
直连 ES(推荐起步)
Filebeat → ES(ingest pipeline 做轻处理)
适合:JSON 结构化日志、K8s 容器日志(带元数据即可)、流量中小。Filebeat 的 processors(dissect/decode_json/drop)已覆盖基础处理;ES 的 Ingest Pipeline 还能在入库侧补一刀(grok、rename)。
优点:少一层组件、延迟低、故障点少。
经过 Logstash
Filebeat → Logstash(重处理) → ES
适合:复杂多格式解析(多行应尽量在 Filebeat 等源端先合并,避免混合来源)、需要字段富化(查库/GeoIP)、一份日志发多个目的地、需要 Kafka 式缓冲前的预处理。
代价:多一层 JVM 组件,资源与运维成本上升。
常见问题(FAQ)
Q:先直连后续能加 Logstash 吗? 可以,但除修改 output 外,还需验证 Logstash pipeline、索引模板、ILM、ingest pipeline、元数据及重复/丢失边界,不能视为无条件无侵入切换。
Q:直连模式下 ES 挂了日志会丢吗? Filebeat 可反压并重试,但是否丢失取决于队列、源文件轮转/删除、磁盘和恢复能力;短期中断也不能无条件保证零丢失。