美文网首页
Filebeat 模块与配置

Filebeat 模块与配置

作者: chesty | 来源:发表于2019-10-14 15:33 被阅读0次

    关于 Filebeat

    • 轻量级日志采集器
    • 输送至 Elasticsearch 或 Logstash,在 Kibana 中实现可视化

    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'
    
    • 多行配置示例
      Java堆栈跟踪由多行组成,在初始行之后的每一行都以空格开头,例如下面这样:
    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
    

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

    • 以空格开头,后面跟 at 或者 ... 的行
    • 以 Caused by: 开头的行
      一些编程语言使用行尾的反斜杠()字符表示该行继续,如本例所示:
    printf ("%10.10ld  \t %10.10ld \t %s\
      %f", w, x, y, z );
    

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

    multiline.pattern: '\\$'
    multiline.negate: false
    multiline.match: before
    

    相关文章

      网友评论

          本文标题:Filebeat 模块与配置

          本文链接:https://www.haomeiwen.com/subject/fsermctx.html