ELK-filebeat 采集配置与实现

1.filebeat 简介

Filebeat 是 Elastic Stack 的一部分,因此能够与 Logstash、Elasticsearch 和 Kibana 无缝协作。无论您要使用 Logstash 转换或充实日志和文件,还是在 Elasticsearch 中随意处理一些数据分析,亦或在 Kibana 中构建和分享仪表板,Filebeat 都能轻松地将您的数据发送至最关键的地方。其主要特点:

  1.  轻量: 对使用环境无依赖
  2. 即插即用: 内部继承了一系列模块,用以简化收集、解析和可视化常用日志格式,例如nginx、Apache、System、mysql等
  3. 可扩展: 可基于libbeat自行构建采集器

2.filebeat 安装和使用

下载地址https://www.elastic.co/downloads/past-releases

#下载
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.9-linux-x86_64.tar.gz

#解压
tar -zxvf filebeat-5.6.9-linux-x86_64.tar.gz

cd filebeat-5.6.9-linux-x86_64

#编辑配置文件

vim filebeat.yml

#启动

./filebeat

#后台启动

nohup ./filebeat &

3、filebeat 参数说明

常见的filebeat分为三个部分:

  1. prospectors 采集配置
  2. Output 输出配置
  3. global 与 General 公共配置与一般配置

采用YAML语言作为其配置语法。它的基本语法规则如下:

  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用Tab键,只允许使用空格
  4. 缩进的空格数据不重要,只要相同层级的元素左侧对齐即可
filebeat.prospectors:
- input_type: log
 paths:
  - /var/log/*.log
- /var/log/nginx/*.access.log
- input_type: log
paths:
 - /var/log/*.log
- /var/log/nginx/*.access.log
output.elasticsearch:
 hosts: ["localhost:9200","192.168.0.01:9200"]

具体配置说明:

############################# Filebeat ######################################
filebeat:
  # List of prospectors to fetch data.
  prospectors:

      # 指定要监控的日志,可以指定具体得文件或者目录
      paths:
        - /var/log/*.log  (这是默认的)(自行可以修改)(比如我放在/home/hadoop/app.log里)
        #- c:\programdata\elasticsearch\logs\*
      # 指定被监控的文件的编码类型,使用plain和utf-8都是可以处理中文日志的
      #encoding: plain
      # 指定文件的输入类型log(默认)或者stdin
      input_type: log   
      # 排除指定符合正则表达式的行 DEBUG TRACE INFO
      # exclude_lines: ["^DBG"]
      # 包含输入中符合正则表达式列表的那些行(默认包含所有行),include_lines执行完毕之后会执行exclude_lines
      # include_lines: ["^ERR", "^WARN"]
      # Exclude files. A list of regular expressions to match. Filebeat drops the files that
      # are matching any regular expression from the list. By default, no files are dropped.
      # 忽略掉符合正则表达式列表的文件
      # exclude_files: [".gz$"]
      # 这个得意思就是会在es中多添加一个字段,格式为 "filelds":{"level":"debug"}
      #fields:
      #  level: debug
      #  review: 1
      # true/false 额外字段是否存放至根目录
      #fields_under_root: false   
      # 设定Elasticsearch输出时的document的type字段 可以用来给日志进行分类。Default: log
      #document_type: log
      # Filebeat以多快的频率去prospector指定的目录下面检测文件更新(比如是否有新增文件)
      # 如果设置为0s,则Filebeat会尽可能快地感知更新(占用的CPU会变高)。默认是10s
      #scan_frequency: 10s

      # 每个harvester监控文件时,使用的buffer的大小
      #harvester_buffer_size: 16384

      # 日志文件中增加一行算一个日志事件,max_bytes限制在一次日志事件中最多上传的字节数,多出的字节会被丢弃
      #max_bytes: 10485760
	  #如果json 为多⾏格式时,指定⼀个root key,以进⾏标识
	  #json.message_key:
       
	   #false/true是否覆盖beat中的字段
	   #json.overwrite_keys:false
	   
	   #false/true 解析失败时是否存储解析失败信息
	   #json.add_error_key:false
	
	   #false/true 是否存放在根⽬录
	   #json.keys_under_root:false
	   

      # 适用于日志中每一条日志占据多行的情况,比如各种语言的报错信息调用栈
      #multiline:

     
        # 多行日志开始的那一行匹配的pattern
        #pattern: ^\[

     
        # 是否需要对pattern条件转置使用,不翻转设为true,反转设置为false。  【建议设置为true】
        #negate: false

        # 匹配pattern后,与前面(before)还是后面(after)的内容合并为一条日志
        #match: after

    
        # 合并的最多行数(包含匹配pattern的那一行)
        #max_lines: 500

     
        # 到了timeout之后,即使没有匹配一个新的pattern(发生一个新的事件),也把已经匹配的日志事件发送出去
        #timeout: 5s

      # 如果设置为true,Filebeat从文件尾开始监控文件新增内容,把新增的每一行文件作为一个事件依次发送,
      # 而不是从文件开始处重新发送所有内容
      #tail_files: false

   
      # Filebeat检测到某个文件到了EOF(文件结尾)之后,每次等待多久再去检测文件是否有更新,默认为1s
      #backoff: 1s

   
      # Filebeat检测到某个文件到了EOF之后,等待检测文件更新的最大时间,默认是10秒
      #max_backoff: 10s

   
      # 定义到达max_backoff的速度,默认因子是2,到达max_backoff后,变成每次等待max_backoff那么长的时间才backoff一次,
      # 直到文件有更新才会重置为backoff
      # 根据现在的默认配置是这样的,每隔1s检测一下文件变化,如果连续检测两次之后文件还没有变化,下一次检测间隔时间变为10s
      #backoff_factor: 2

      # 这个选项关闭一个文件,当文件名称的变化。#该配置选项建议只在windows
      #force_close_files: false

    # Additional prospector
    #-
      # Configuration to use stdin input
      #input_type: stdin


  # spooler的大小,spooler中的事件数量超过这个阈值的时候会清空发送出去(不论是否到达超时时间)
  #spool_size: 2048


  # 是否采用异步发送模式(实验功能)
  #publish_async: false


  # spooler的超时时间,如果到了超时时间,spooler也会清空发送出去(不论是否到达容量的阈值)
  #idle_timeout: 5s

  # 记录filebeat处理日志文件的位置的文件,默认是在启动的根目录下
  #registry_file: .filebeat

  # 如果要在本配置文件中引入其他位置的配置文件,可以写在这里(需要写完整路径),但是只处理prospector的部分
  #config_dir:
############################# Output ##########################################
output:

  elasticsearch:(这是默认的,filebeat收集后放到es里)(自行可以修改,比如我有时候想filebeat收集后,然后到redis,再到es,就可以注销这行)
   
    hosts: ["localhost:9200"] (这是默认的,filebeat收集后放到es里)(自行可以修改,比如我有时候想filebeat收集后,然后到redis,再到es,
就可以注销这行)
展开阅读全文

没有更多推荐了,返回首页