Logstash Filter配置和注意事项——古氪流技术

Logstash进行日志采集:

在Logstash进行日志采集的时候需要使用Filter对数据进行过滤,这里可能会出现message无法匹配的问题,导致message里面存在一些信息如下:

{"@timestamp":"2018-05-26T10:13:58.335Z","beat":{"hostname":"iZm5e2n9hyq2mxqp6jl4m2Z","name":"iZm5e2n9hyq2mxqp6jl4m2Z","version":"5.6.7"},"input_type":"log","message":"[

然后才是message,在使用grok进行过滤前,先使用json对数据进行格式转换,后面的正则表达式才能匹配出来,具体filter如下:

filter {

    if [type] == "pay" {

        json {

             source => "message"

        }

        grok {

            match => {

             "message" => "正则"

         }

        overwrite => ["message"]

     }

}

其中 Grok可以使用多个进行配置,比如第一个正则里面分离出来了一个字段,在第二个grok里面,可以直接使用第一个里面的字段进行继续分离,如下,message分离出来msg,msg分离出来method,method分离出来module:

grok {

   match => [

    "message","\[(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\]\[(?\w*)\s\]\[(?\S*)\]\s(?.*)",

    "message","\[(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\]\[(?\w*)\s\]\s(?.*)"

   ]

}

grok{

   match => {

      "msg" => "^(?[A-Za-z0-9$.*]*)"

   }

}

grok {

   match => {

     "method" => "[A-Za-z0-9$*]*.[A-Za-z0-9$*]*.(?[A-Za-z0-9$*]*)"

   }

}

转载自:http://blog.goc6.com/view/9

你可能感兴趣的:(Logstash Filter配置和注意事项——古氪流技术)