1. Logstash功能虽然强大,但是它依赖java、在数据量大的时候,Logstash进程会消耗过多的系统资源,这将严重影响业务系统的性能,而filebeat就是一个完美的替代者,filebeatBeat成员之一,基于Go语言,没有任何依赖,配置文件简单,格式明了,同时,filebeatlogstash更加轻量级,所以占用系统资源极少,非常适合安装在生产机器上。

下载安装

官方下载地址:https://www.elastic.co/cn/downloads/beats/filebeat
选择自己对应的版本下载即可,解压下载后的包对应的目录为:
image.png

文件介绍

fields:
filebeat:二进制启动文件
filebeat.yml:filebeat配置文件
modules.d:配置模板文件,进去后有各种服务的日志收集模板
image.png
这些模板配置在官网有详细介绍:
1、使用命令来查看可使用的配置模板
image.png
2、可以这样同时启动多个配置模板,这里启动了system,nginx,mysql
image.png
3、可以将对应的配置模板收集的日志输出到指定的目录
image.png
如需了解更多查看配置,请看modules文档,文档地址:
https://www.elastic.co/guide/en/beats/filebeat/current/configuration-filebeat-modules.html
image.png

配置

filebeat的配置文件为filebeat.yml,这里仅列出常用的配置项,内容如下:

  1. filebeat.inputs:
  2. - type: log
  3. enabled: true
  4. paths:
  5. - /var/log/messages
  6. - /var/log/secure
  7. fields:
  8. log_topic: osmessages
  9. name: "192.168.126.101"
  10. output.kafka:
  11. enabled: true
  12. hosts: ["192.168.126.11:9092", "192.168.126.12:9092", "192.168.126.13:9092"]
  13. version: "0.10"
  14. topic: '%{[fields][log_topic]}'
  15. partition.round_robin:
  16. reachable_only: true
  17. worker: 2
  18. required_acks: 1
  19. compression: gzip
  20. max_message_bytes: 10000000
  21. logging.level: debug

各配置项介绍

filebeat.inputs:用于定义数据原型。
type:指定数据的输入类型,这里是log,即日志,是默认值,还可以指定为stdin,即标准输入。?
enabled: true:启用手工配置filebeat,而不是采用模块方式配置filebeat。?
paths:用于指定要监控的日志文件,可以指定一个完整路径的文件,也可以是一个模糊匹配格式,例如:
- /data/nginx/logs/nginx_.log,该配置表示将获取/data/nginx/logs目录下的所有以.log结尾的文件,注意这里有个破折号“-”,要在paths配置项基础上进行缩进,不然启动filebeat会报错,另外破折号前面不能有tab缩进,建议通过空格方式缩进。
- /var/log/
.log,该配置表示将获取/var/log目录的所有子目录中以”.log”结尾的文件,而不会去查找/var/log目录下以”.log”结尾的文件。

name: 设置filebeat收集的日志中对应主机的名字,如果配置为空,则使用该服务器的主机名。这里设置为IP,便于区分多台主机的日志信息。

output.kafka:filebeat支持多种输出,支持向kafka,logstash,elasticsearch输出数据,这里的设置是将数据输出到kafka。
nabled:表明这个模块是启动的。
host: 指定输出数据到kafka集群上,地址为kafka集群IP加端口号。
topic:指定要发送数据给kafka集群的哪个topic,若指定的topic不存在,则会自动创建此topic。注意topic的写法,在filebeat6.x之前版本是通过“%{[type]}”来自动获取document_type配置项的值。而在filebeat6.x之后版本是通过’%{[fields][log_topic]}’来获取日志分类的。
partition.round_robin:设置kafka选择partition的方式,robin指轮询的方式
worker:指worker数量
required_acks:指kafka生产和消费的机制,设置为1代表kafka的leader确定收到消息后才开始第二条的发送
compression:设置数据的压缩方式
max_message_bytes:指单条消息的最大长度
logging.level:定义filebeat的日志输出级别,有critical、error、warning、info、debug五种级别可选,在调试的时候可选择debug模式。

更多的配置项详情请查看官方文档:
https://www.elastic.co/guide/en/beats/filebeat/current/configuring-howto-filebeat.html
image.png
这里以输入和数据简单介绍:

输入

可配置的输入介质,这里看到可以收集到的日志包括了绝大部分的介质,例如网络日志,系统日志,各种缓存,协议日志,以及docker的容器日志,具体的配置可以点击对应的输入介质查看
image.png
这里可以看到采集redis日志的配置(虽然这里说此功能还在测试阶段,可能后面会被移除或做部分修改,但不妨碍文档教学,哈哈哈),当然后面还有很多的可选配置,有兴趣的可以去看看哦
image.png

输出

可配置的输出介质,可以将日志直接输出到es中,也可以将日志通过kafka,redis等中间件来做桥梁,缓冲输出到对应的系统中,或者直接输出到控制台上
image.png
点击kafka可以看到输出日志到kafka最精简的配置,基本上和我们上面配置的差不多,哈哈哈
image.png
其他的有兴趣可以自己看看,官方文档写的是真滴不错