1 资源

资源信息

版本号

备注

服务器

Centos7

IP: 192.168.51.4

Filebeat

7.4.2

CSDN filebeat下载:

2 介绍

Filebeat是一个日志文件托运工具。可作为一个客户端安装在你的服务器上,Filebeat可以监控日志的目录或者指定的日志文件,实时读取文件,并将其上传到Elasticsearch或Logstash进行索引等处理。

Filebeat工作流程是这样的:开启Filebeat时,它会启动一个或多个探测器(prospectors)去检测你设置的日志路径或日志文件,在定位到每一个日志文件以后,Filebeat启动一个收割进程(harvester)。每一个收割进程读取一个日志文件的新内容并把数据发送到libbeat ,libbeat会集合这些事件并将汇总的数据发送到你设置的外部接收程序中。

filebeat 采集nginx日志格式提取到field filebeat怎么采集日志的_elk

3 安装与配置

3.1 上传服务器

将文件上传到服务器的 /opt/module/software/filebeat 目录

[root@localhost software]# cd /opt/module/software/filebeat/
[root@localhost filebeat]# ll
总用量 53912
-rw-r--r--. 1 root root 55201797 3月  25 15:46 filebeat-7.4.2-linux-x86_64.tar.gz.zip

3.2 解压到指定目录

[root@localhost filebeat]# unzip filebeat-7.4.2-linux-x86_64.tar.gz.zip
[root@localhost filebeat]# tar -zxvf filebeat-7.4.2-linux-x86_64.tar.gz -C /usr/local
[root@localhost filebeat]# cd /usr/local
[root@localhost local]# mv filebeat-7.4.2-linux-x86_64/ filebeat-7.4.2

3.3 修改配置

[root@localhost local]# cd filebeat-7.4.2
[root@localhost filebeat-7.4.2]# vim /usr/local/filebeat-7.4.2/filebeat.yml
###################### Filebeat Configuration Example #########################
filebeat.inputs:

  - input_type: log

    paths:
      ## app-服务名称.log, 为什么写死,防止发生轮转抓取历史数据
      - /usr/local/logs/app-elk-demo.log
    #定义写入 ES 时的 _type 值
    document_type: "app-log"
    multiline:
      #pattern: '^\s*(\d{4}|\d{2})\-(\d{2}|[a-zA-Z]{3})\-(\d{2}|\d{4})'   # 指定匹配的表达式(匹配以 2017-11-15 08:04:23:889 时间格式开头的字符串)
      pattern: '^\['                              # 指定匹配的表达式(匹配以 "{ 开头的字符串)
      negate: true                                # 是否匹配到
      match: after                                # 合并到上一行的末尾
      max_lines: 2000                             # 最大的行数
      timeout: 2s                                 # 如果在规定时间没有新的日志事件就不等待后面的日志
    fields:
      logbiz: collector
      logtopic: app-log-collector   ## 按服务划分用作kafka topic
      evn: dev

  - input_type: log

    paths:
      - /usr/local/logs/error-elk-demo.log
    document_type: "error-log"
    multiline:
      #pattern: '^\s*(\d{4}|\d{2})\-(\d{2}|[a-zA-Z]{3})\-(\d{2}|\d{4})'   # 指定匹配的表达式(匹配以 2017-11-15 08:04:23:889 时间格式开头的字符串)
      pattern: '^\['                              # 指定匹配的表达式(匹配以 "{ 开头的字符串)
      negate: true                                # 是否匹配到
      match: after                                # 合并到上一行的末尾
      max_lines: 2000                             # 最大的行数
      timeout: 2s                                 # 如果在规定时间没有新的日志事件就不等待后面的日志
    fields:
      logbiz: collector
      logtopic: error-log-collector   ## 按服务划分用作kafka topic
      evn: dev

output.kafka:
  enabled: true
  hosts: ["192.168.51.4:9092"]
  topic: '%{[fields.logtopic]}'
  partition.hash:
    reachable_only: true
  compression: gzip
  max_message_bytes: 1000000
  required_acks: 1
logging.to_files: true

3.4 测试启动

3.4.1 校验配置是否正确

[root@localhost filebeat-7.4.2]# ./filebeat test config -c filebeat.yml
## Config OK

3.4.2 启动filebeat

如果kafaka还未安装,请注释掉下面的代码在运行

#output.kafka:
  #enabled: true
  #hosts: ["192.168.51.4:9092"]
  #topic: '%{[fields.logtopic]}'
  #partition.hash:
   # reachable_only: true
  #compression: gzip
  #max_message_bytes: 1000000
  #required_acks: 1
[root@localhost filebeat-7.4.2]#  /usr/local/filebeat-7.4.2/filebeat &

3.4.3 查看进程

[root@localhost filebeat-7.4.2]# ps -ef | grep filebeat
root      87453  86806  1 18:44 pts/2    00:00:00 /usr/local/filebeat-7.4.2/filebeat
root      87464  86806  0 18:44 pts/2    00:00:00 grep --color=auto filebeat

3.4.4 停止filebeat

[root@localhost filebeat-7.4.2]# ps -ef |grep filebeat[root@localhost filebeat-7.4.2]# kill -9  #进程号