美文网首页
filebeat、logstash过滤器实例

filebeat、logstash过滤器实例

作者: 侯文_ad82 | 来源:发表于2019-09-25 18:06 被阅读0次

主要描述filebeat和logstash的过滤器使用。

参考:

   filebeat:   https://www.elastic.co/guide/en/beats/filebeat/6.8/defining-processors.html

   logstash:  https://www.elastic.co/guide/en/logstash/6.8/filter-plugins.html

版本:elasticsearch-6.8.1、filebeat-6.8.0、logstash-6.8.0

一、需求:

将如下日志数据,通过filebeat或者filebeat+logstash存入elasticsearch。

2019-08-23 09:35:45.877 [reactor-http-epoll-4] INFO  aa- test:{"auth":true,"deduct":true,"envType":1,"executeTime":22,"id":"a4fff9ab3b194803a33f7b22cb64972a","reqRealHeader":{"Connection":"keep-alive","User-Agent":"Apache-HttpClient/4.5.6 (Java/1.8.0_191)"},"reqRealParam":{}}

二、实现:

1.通过filebeat实现过滤,在filebeat.yml中添加如下信息:

processors:

- dissect:

    tokenizer: "%{} [%{}] %{}  aa- test:%{msg1}"

    field: "message"

    target_prefix: "dissect"

- decode_json_fields:

    fields: ["dissect.msg1"]

    max_depth: 1

    target: ""

    overwrite_keys: true

- drop_fields:

    fields: ["message", "dissect"]

说明:filebeat默认将每行日志信息读取到message字段中。

          1.将message字符串通过dissect处理,获取json字符串信息到msg1中,此时msg1中为:

{"auth":true,"deduct":true,"envType":1,"executeTime":22,"id":"a4fff9ab3b194803a33f7b22cb64972a","reqRealHeader":{"Connection":"keep-alive","User-Agent":"Apache-HttpClient/4.5.6 (Java/1.8.0_191)"},"reqRealParam":{}}

          2.通过decode_json_fields处理,将json字符串转化为json对象。此处根据业务需求需要将json解析出的属性值全部放到顶级字段,需要将target设置为空。此处可以通过target自行设置存放目标字段位置;

          3.通过drop_fields将过程数据删除。如果不删除,每条数据将是原来数据的三倍大小。

2.通过logstash实现过滤,在logstash-sample.conf中添加如下信息:

filter {

    grok {

        match => { "message" => "(?<temMsg>(?<=gateway_stat_info:).*)" }

        remove_field => ["message"]

    }

    json {

         source => "temMsg"

         remove_field => ["temMsg"]

    }

}

说明:logstash接收到filebeat传来的数据,默认日志信息放在message字段中。

         1.通过grok过滤器去掉json字符串以外的信息,过滤完成后信息放到了temMsg中,内容如下:

{"auth":true,"deduct":true,"envType":1,"executeTime":22,"id":"a4fff9ab3b194803a33f7b22cb64972a","reqRealHeader":{"Connection":"keep-alive","User-Agent":"Apache-HttpClient/4.5.6 (Java/1.8.0_191)"},"reqRealParam":{}}

          2.通过json过滤器将temMsg中的json字符串解析为json对象,并将解析得到的字段放到顶级字段中。   

相关文章

网友评论

      本文标题:filebeat、logstash过滤器实例

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