zoukankan      html  css  js  c++  java
  • Filebeat定义index

    一、Filebeat自定义index

    默认情况下filebeat写入elasticsearch中的数据,将会自动生成一个flibe-version-date的索引,采集的数据都在这个索引下面。根据要求希望将不同服务的日志输出到各自对应的索引。

    如下:

    配置文件
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /data/logs/pb-dubbo-user/err_*.log
      fields:
        source: dubbo-user
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after 
    ​
    - type: log
      enabled: true
      paths:
        - /data/logs/pb-server-admin/err_*.log
      fields:
        source: server-admin
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    ​
    - type: log
      enabled: true
      paths:
        - /data/logs/pb-dubbo-product/err_*.log
      fields:
        source: dubbo-product
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: false
      multiline.match: after
    ​
    - type: log
      enabled: true
      paths:
        - /data/logs/pb-server-api/err_*.log
      fields:
        source: server-api
      multiline.pattern: '^[[:space:]]+(at|.{3})|^Caused by|^java.net|^org.spring|^org.apache:'
      multiline.negate: true
      multiline.match: after
    ​
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    ​
    ​
    setup.template.settings:
      index.number_of_shards: 1
    ​
    # 定义模板的相关信息
    setup.template.name: "pb_log"
    setup.template.pattern: "pb-*"
    setup.template.overwrite: true
    setup.template.enabled: true
    ​
    #7版本自定义ES的索引需要把ilm设置为false
    setup.ilm.enabled: false
    ​
    ​
    setup.kibana:
     hosts: "192.168.100.163:5601"
    ​
    output.elasticsearch:
      hosts: ["192.168.100.163:9200"]
      index: "pb-%{[fields.source]}-*"
      indices:
        - index: "pb-dubbo-user-%{+yyyy.MM.dd}"
          when.equals:
            fields.source: "dubbo-user"
        - index: "pb-server-admin-%{+yyyy.MM.dd}"
          when.equals:
            fields.source: "server-admin"
        - index: "pb-server-api-%{+yyyy.MM.dd}"
          when.equals:
            fields.source: "server-api"
        - index: "pb-dubbo-product-%{+yyyy.MM.dd}"
          when.equals:
            fields.source: "dubbo-product"
    ​
    processors:
      - add_host_metadata: ~
      - add_cloud_metadata: ~

      如果不想以日期来划分,可以将{+yyyy.MM.dd}日期格式去掉

     

    二、Filebeat合并多行日志

    将JAVA堆栈跟踪日志组合成一个message

    示例:

    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

    要将这些行整合到Filebeat中的单个事件中,请使用以下多行配置:

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

    C风格的日志

    一些编程语言在一行末尾使用反斜杠()字符,表示该行仍在继续,如本例中所示:

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

    要将这些行整合到Filebeat中的单个事件中,请使用以下多行配置

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

    此配置将以""字符结尾的任何行与后面的行合并。

     

    时间戳

    来自Elasticsearch等服务的活动日志通常以时间戳开始,然后是关于特定活动的信息,如下例所示:

    [2015-08-24 11:49:14,389][INFO ][env                      ] [Letha] using [1] data paths, mounts [[/
    (/dev/disk1)]], net usable_space [34.5gb], net total_space [118.9gb], types [hfs]

    要将这些行整合到Filebeat中的单个事件中,请使用以下多行配置:

    multiline.pattern: '^[[0-9]{4}-[0-9]{2}-[0-9]{2}'
    multiline.negate: true
    multiline.match: after

    Multiline

    • multiline.pattern: 正则表达式,以空格开头,值为^[[:space:]]

    • multiline.negate: 是否匹配正则表达式内容,取值为 true|false

    • multiline.match: 取值为after|before

    pattern=^b,意思是以b开头。negate有false和true两种取值,match也有after和before两种取值。下面详述:
    ​
    negate参数为false,表示“否定参数=false”。multiline多行参数负负得正,表示符合pattern、match条件的行会融入多行之中、成为一条完整日志的中间部分。如果match=after,则以b开头的和前面一行将合并成一条完整日志;如果match=before,则以b开头的和后面一行将合并成一条完整日志。
    ​
    negate参数为true,表示“否定参数=true”。multiline多行参数为负,表示符合match条件的行是多行的开头,是一条完整日志的开始或结尾。如果match=after,则以b开头的行是一条完整日志的开始,它和后面多个不以b开头的行组成一条完整日志;如果match=before,则以b开头的行是一条完整日志的结束,和前面多个不以b开头的合并成一条完整日志。
     
  • 相关阅读:
    关于作用域和上下文
    flex布局快速成型(原创)
    RESTful是什么
    Node.js作web服务器总结
    持续学习可以降低不安全感
    Codeigniter的一些优秀实践
    如何在大公司好好发挥自己的才能
    读点大脑科学,帮你显著提高效率
    只做正确的事情,并持续输出价值
    WordPress后台edit-tags.php里无限栏目分类实现
  • 原文地址:https://www.cnblogs.com/bigberg/p/13551987.html
Copyright © 2011-2022 走看看