一、Filebeat简介

Filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tail file),并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。带有内部模块(auditd,Apache,Nginx,System和MySQL),可通过一个指定命令来简化通用日志格式的收集,解析和可视化。

二、安装使用(windows和linux安装包)

1.下载并解压filebeat

下载地址:https://www.elastic.co/cn/downloads/beats/filebeat

2.编辑配置文件filebeat.yml

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

大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格
缩进的空格数据不重要,只要相同层级的元素左侧对齐即可

# ============================== Filebeat inputs ===============================
filebeat.config.inputs:
  enable: true
  path: ${path.config}/input.yml
  reload.enabled: true
  reload.period: 2s

# ============================== Filebeat modules ==============================

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: true
  reload.period: 10s

# ======================= Elasticsearch template setting =======================

setup.template.settings:
  index.number_of_shards: 3
  index.number_of_replicas: 1
  
# 允许自动生成index模板
setup.template.enabled: true
# # 生成index模板时字段配置文件
setup.template.fields: fields.yml
# # 如果存在模块则覆盖
setup.template.overwrite: true
# # 生成index模板的名称
setup.template.name: "ops_log" 
# # 生成index模板匹配的index格式 
setup.template.pattern: "ops-*" 
#索引生命周期管理ilm功能默认开启,开启的情况下索引名称只能为filebeat-*, 通过setup.ilm.enabled: false进行关闭;
setup.ilm.pattern: "{now/d}"
setup.ilm.enabled: false
# ================================== General ===================================

# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9200"]
  index: "%{[fields.source]}-*"
  indices:
    - index: "ops-systemlog-%{+yyyy.MM.dd}"
      when.equals: 
        fields: 
          source: "ops-systemlog"
    #- index: "opslog-operationlog-%{+yyyy.MM.dd}"
    - index: "ops-operationlog-%{+yyyy.MM.dd}"
      when.equals:
        fields:
          #source: "operationlog"
          source: "ops-operationlog"

# ================================= Processors =================================
processors:
  #...
  - script:
      lang: javascript
      id: my_filter
      tag: enable
      source: >
        function process(event) {
            //提取时间值
            var str= event.Get("message");
            var time =str.split(" ").slice(0,2).join(" ");
            event.Put("start_time",time);
        }
 
  - timestamp:
      # 格式化时间值 给 时间戳 
      field: start_time
      layouts:
        - '2006-01-02 15:04:05'
        - '2006-01-02 15:04:05.999'
      test:
        - '2019-06-22 16:33:51'

input.yml

#filebeat.input:
- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - E:\junxue\ELK_demo03\demo01\system*.txt
  tags: "c7f1771f-0c8f-4c75-9d71-3b8c4b6bd191"
  fields: 
    source: ops-systemlog
   #tags: ["GUID"]
    #- /var/log/*.log
    #- c:\programdata\elasticsearch\logs\*
  #include_l ines: ['^ERROR']
    
- type: log
  enabled: true
  paths: 
    - E:\junxue\ELK_demo03\demo02\operation*.txt
    #- E:\junxue\ELK_demo02\demo02\junxue*.txt
  tags: "c7f1771f-0c8f-4c75-9d71-3b8c4b6bd190"
  fields: 
    #source: operationlog
    source: ops-operationlog

3.启动

linux

sudo ./filebeat -e -c filebeat.yml

window

.\filebeat.exe -e -c filebeat.yml

三、配置文件详细说明

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
	

参考:
【1】filebeat 配置文件详解https://blog.csdn.net/chengxuyuanyonghu/article/details/54378778
【2】ELK-filebeat 采集配置与实现https://blog.csdn.net/fd2025/article/details/80289499

Logo

更多推荐