1.FileBeat和Logstash的对比

注意:FileBeat是go语言写的,可以直接作为一个可执行程序运行,无需依赖 Java 环境。
Filebeat和Logstash都是Elastic Stack(以前称为ELK Stack)的组件,用于日志文件的处理和转发。它们常常一起使用,但是也可以在某些场景下相互替代,这取决于具体需求和环境。
Filebeat 是轻量级的日志文件收集器,设计用来捕获、预处理和转发日志文件给Logstash、Elasticsearch或其他服务。它适用于在服务器上作为代理运行,监听文件系统中的日志文件变动。
Logstash 是一个更强大和多功能的数据处理管道,它可以接收、处理和转发日志,支持多种输入、输出、编解码器以及过滤器插件。

1.1Filebeat替代Logstash的场景

  • 简单的日志收集和转发:如果你只需要简单地收集日志文件并将它们发送到Elasticsearch,而不需要复杂的处理(如数据的过滤、变换、丰富),那么Filebeat足以满足需求。
  • 资源限制:Filebeat比Logstash更轻量级,占用的系统资源更少。如果你的环境资源有限(如在边缘计算环境中),可能会更倾向于使用Filebeat。
  • 集中式处理不必要:如果在每个服务器上预处理数据没有额外的好处,或者你想直接在Elasticsearch中处理数据,那么可以只使用Filebeat。

1.2Logstash的独特优势

  • 复杂的数据处理:当需要执行复杂的数据转换和过滤时,Logstash的各种插件和强大的处理引擎更为合适。
  • 多源聚合:如果你需要处理来自不同源的数据流,并将它们聚合到一个数据存储中,Logstash提供了更多的灵活性。
  • 输出到多个目的地:Logstash可以将数据发送到多个目标,而不仅仅是Elasticsearch。
  • 在某些情况下,Filebeat可以与Logstash配合使用:Filebeat在源头收集日志文件,然后将日志发送到Logstash进行进一步的处理和过滤。最后,处理过的数据可以通过Logstash发送到Elasticsearch或其他存储解决方案。

因此,Filebeat可以在某些场景下替代Logstash,但这取决于你的特定需求。如果需求简单,只需日志收集和转发,Filebeat可能就足够了;如果需要复杂的处理,那么Logstash可能更适合。

2.FileBeat结合Logstash使用

2.1下载FileBeat安装包

一般根据es的版本来确定FileBeat的版本,一般保持一致即可。
FileBeat和es版本对应关系:https://www.elastic.co/cn/support/matrix#matrix_compatibility
FileBeat下载地址:https://www.elastic.co/cn/downloads/past-releases/filebeat-7-8-0

2.2上传并解压

1
tar -zxvf filebeat-7.8.0-linux-x86_64.tar.gz

2.3修改Logstash的配置文件logstash.conf

1
input { #特别注意(重点):这行配置指定了Beats客户端(如Filebeat)可以通过端口5044发送数据到Logstash。这是Beats的默认端口。 beats { port => 5044 } tcp { #这行配置指定了一个TCP端口,其他系统或应用程序可以通过这个端口发送JSON格式的数据到Logstash。 port => 4569 #这行配置指定了输入数据将使用json编解码器进行解析。这意味着传入的数据应该是JSON格式,Logstash会自动将其解析为事件数据。 codec => "json" } } output { if[appname] != "" { elasticsearch { hosts => ["http://192.168.0.137:9200"] index => "%{[appName]}-%{+YYYY.MM.dd}" } } else { elasticsearch { hosts => ["http://192.168.0.137:9200"] #当appname字段不存在或为空时,使用@metadata中的beat和version字段来构建索引名,并且包括当前日期。这通常是由Beats设置的内部字段。 index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } } }

2.4修改filebeat的配置文件filebeat.yml

主要配置的是日志的搜集目录为/var/log/service.log,这个目录是应用 service 输出日志的文件。输出到 logstsh 的地址为 192.168.0.137。

1
filebeat.inputs: - type: log enabled: true paths: - /var/log/service.log output.logstash: hosts: ["192.168.0.137:5044"]

3.启动FileBeat

1
./filebeat -e >filebeat.log 2>&1 &