Filebeat 模块与配置

2019-10-14  本文已影响0人  chesty

关于 Filebeat

Filebeat 工作原理

Filebeat由两个主要组件组成:inputs 和 harvesters (直译:收割机,采集器)。这些组件一起工作以跟踪文件,并将事件数据发送到你指定的输出。

harvester是什么

一个harvester负责读取一个单个文件的内容。

harvester逐行读取每个文件(一行一行地读取每个文件),并把这些内容发送到输出。

每个文件启动一个harvester。

harvester负责打开和关闭这个文件,这就意味着在harvester运行时文件描述符保持打开状态。

在harvester正在读取文件内容的时候,文件被删除或者重命名了,那么Filebeat会续读这个文件。这就有一个问题了,就是只要负责这个文件的harvester没用关闭,那么磁盘空间就不会释放。默认情况下,Filebeat保存文件打开直到close_inactive到达

input是什么

一个input负责管理harvesters,并找到所有要读取的源。

如果input类型是log,则input查找驱动器上与已定义的glob路径匹配的所有文件,并为每个文件启动一个harvester。

每个input都在自己的Go例程中运行。

下面的例子配置Filebeat从所有匹配指定的glob模式的文件中读取行:

filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log
    - /var/path2/*.log

配置项

multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
[2015-08-24 11:49:14,389] Start new event
[2015-08-24 11:49:14,395] Content of processing something
[2015-08-24 11:49:14,399] End event

为了合并这种行,用下面的多行配置:

multiline.pattern: 'Start new event'
multiline.negate: true
multiline.match: after
multiline.flush_pattern: 'End event'
Exception in thread "main" java.lang.NullPointerException
        at com.example.myproject.Book.getTitle(Book.java:16)
        at com.example.myproject.Author.getBookTitles(Author.java:25)
        at com.example.myproject.Bootstrap.main(Bootstrap.java:14)

为了把这些行合并成单个事件,用写了多行配置:

multiline.pattern: '^[[:space:]]'
multiline.negate: false
multiline.match: after

这个配置将任意以空格开始的行合并到前一行

下面是一个稍微更复杂的例子

Exception in thread "main" java.lang.IllegalStateException: A book has a null property
       at com.example.myproject.Author.getBookIds(Author.java:38)
       at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
Caused by: java.lang.NullPointerException
       at com.example.myproject.Book.getId(Book.java:22)
       at com.example.myproject.Author.getBookIds(Author.java:35)
       ... 1 more

为了合并这个,用下面的配置:

multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'
multiline.negate: false
multiline.match: after

在这个例子中,模式匹配下列行:

printf ("%10.10ld  \t %10.10ld \t %s\
  %f", w, x, y, z );

为了把这样的多行合并成单个事件,用下列配置:

multiline.pattern: '\\$'
multiline.negate: false
multiline.match: before
上一篇下一篇

猜你喜欢

热点阅读