安装Filebeat:

在test14服务器上安装Filebeat,如下:

[root@test14 ~]# tar -zxf filebeat-7.3.1-linux-x86_64.tar.gz -C /usr/local/
[root@test14 ~]# ln -s /usr/local/filebeat-7.3.1-linux-x86_64/ /usr/local/filebeat
[root@test14 ~]# cd /usr/local/filebeat

#----------------------添加hosts解析----------------
[root@test14 filebeat]# cat /etc/hosts
192.168.37.11 test11
192.168.37.12 test12
192.168.37.13 test13
配置前的思考?
  • Filebeat 如何读取多个日志目录?
  • Filebeat 如何区分不同日志来源?
配置Filebeat:

先启动zk和kafka,前置环境已配置好,下例是抓取nginx的日志文件,如下:

[root@test14 filebeat]# vim filebeat.yml 
#=========================== Filebeat prospectors =============================
filebeat.inputs:

- type: log                     #指定数据的输入类型,默认为log,另外还可以指定stdin
  paths:                        #配置多个paths,Filebeat可以实现读取多个目录
    - /app/logs/*/access.log    #指定日志位置
  exclude_files: ['/app/logs/ad-auth/*']
  fields:                       #定义域来标识不同的 log,实现不同日志来源的区分
    log_topic: nginx_access_log
    document_type: nginx
- type: log
  paths:
    - /app/logs/*/error.log
  exclude_files: ['/app/logs/ad-auth/*']
  fields:
    log_topic: nginx_error_log
    document_type: nginx
#================= Preocessors============================================
processors:                    #此配置是将日志输出格式过滤掉,一般情况下,一些无用的日志字段我们可以删除,只看关键性的信息
  - drop_fields:
      fields: ["beat","input.type"]
#----------------------------- Kafka output --------------------------------
output.kafka:
  # initial brokers for reading cluster metadata
  hosts: ["test11:9092", "test12:9092", "test13:9092"]
#注意:这里需要在/etc/hosts添加ip到主机的解析,直接写ip:端口后面filebeat一样要跳转到主机:端口的,hosts没解析的日志数据推不到kafka上去。

  # message topic selection + partitioning
  topic: '%{[fields.log_topic]}'#指定要发送数据到kafka集群的哪个topic,与上述的"fields: log_topic:"相对应,也可以是'%{[filelds][log_topic]}'的写法
  partition.round_robin:        #开启kafka的partition分区,分区策略有 random/round_robin/hash
    reachable_only: false       #是否只发往可达分区
  version: 2.0.0                #kafka版本,但目前filebeat7.3版本中有效值输入0.8.2.0和2.0.0,我的kafka版本是2.12的,设置成2.0.0或这个有效值内的数值也可以的
  required_acks: 1              #要求的ACK可靠性等级。0 =无响应,1 =等待本地提交,-1 =等待所有副本提交。默认值为1
  compression: none             #设置输出压缩编解码器。必须是一个none,snappy,lz4和gzip。默认是gzip
  max_message_bytes: 1000000    #JSON编码消息的最大允许大小。更大的消息将被删除。默认值为1000000(字节)。该值应等于或小于经纪人的值message.max.bytes
连接到kafka查看有没有数据传进来了
[root@test13 ~]# cd /usr/local/kafka_2.12-2.3.0/bin
[root@test13 ~]# ./kafka-console-consumer.sh --bootstrap-server 192.168.37.12:9092 --topic nginx_access_log

注:Filebeat官网参考文档https://www.elastic.co/guide/en/beats/filebeat/current/kafka-output.html

文档更新时间: 2019-08-30 10:26   作者:子木