介绍

在Elastic Stack中,Filebeat是一个轻量级的日志收集器,用于将日志数据从服务器发送到Elasticsearch或Logstash进行索引和分析。在Filebeat中,有两个不同的输入模块:logfilestream,它们用于处理不同类型的日志数据。

1. log 输入模块:

log 输入模块是 Filebeat 的标准日志输入模块,用于处理普通文本日志文件。当日志文件是逐行文本格式时,这是最常用的输入模块。它按行读取文本日志文件,并将每行解析为一个事件,然后将这些事件发送到 Elasticsearch 或 Logstash。

使用 log 输入模块的示例配置:

filebeat.inputs:
- type: log
  paths:
    - /var/log/myapp/*.log

2. filestream 输入模块:

filestream 输入模块是 Filebeat 7.13.0 版本引入的新功能。它专门用于处理结构化日志数据,例如 JSON、NDJSON、XML 等格式。相比于 log 输入模块,filestream 可以更高效地处理这些结构化数据,因为它不仅仅是按行读取日志文件,而是基于文件内容的格式来解析和处理日志数据。

使用 filestream 输入模块的示例配置:

filebeat.inputs:
- type: filestream
  paths:
    - /var/log/myapp/*.json
    - /var/log/myapp/*.ndjson

区别总结:

  • log 输入模块适用于处理普通逐行文本日志文件。
  • filestream 输入模块适用于处理结构化日志数据,例如 JSON、NDJSON 等格式。
  • filestream 输入模块相对于 log 输入模块在处理结构化数据方面更加高效和灵活。

根据你的日志数据类型选择合适的输入模块可以提高日志收集的性能和效率。如果你的日志文件是逐行文本格式,使用 log 输入模块是很好的选择;如果你的日志文件是结构化的,并且包含 JSON 等格式,那么 filestream 输入模块可能更适合你的需求。