LogStach-Grok:如何匹配Apache TimeStamp

时间:2016-06-13 16:34:00

标签: apache timestamp logstash logstash-grok grok

我不知道如何匹配我的TimeStamp。有人可以帮助我吗?

来自Apache Log的TimeStamps示例:"2016-06-13T14:54:39.000+0100"

filter {   if [type] == "apache" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }   }
    date {
      timezone     => "UTC"
      match        => [ "timestamp" , "yyyy-mm-ddTHH:mm:ss Z"]
    }   } }

output {   stdout { codec => rubydebug } }

输出:

  

{:timestamp =>“2016-06-13T14:56:43.196000 + 0100”,:message =>“错误:   无法注册过滤日期插件。报告的错误是:\ n非法   模式组件:T为模式'yyyy-mm-dd \ THH:mm:ss Z'“,   :级别=>:错误}

Apache日志示例:

  

{“@ version”:“1”,“@ timestamp”:“2016-06-14T09:11:23.000 + 0100”,   “message”:“GET / page1 / page2 /   HTTP / 1.1“,”via“:”192.168.1.1“,”client-ip“:”192.168.1.23“,   “remote-logname”:“ - ”,“remote-user”:“ - ”,“recv-time”:   “[14 / Jun / 2016:09:11:23 +0100]”,“serve-time-microsec”:“85471”,   “request”:“GET / page1 / page2 /   HTTP / 1.1“,”status“:”200“,”size“:”79648“,”referer“:   “http://www.google.com/”,“user-agent”:“Mozilla / 5.0(Windows; U; Windows NT 6.1; en-US;   rv:1.9.2.13)Gecko / 20101203 Firefox / 3.6.13“,”url“:   “/ page1 / page2 /”,“查询”:“”,   “method”:“GET”,“protocol”:“HTTP / 1.1”,“vhost”:“www.site.com”,   “received-size”:“998”}

1 个答案:

答案 0 :(得分:1)

从您的完整日志中我可以看到它已经采用Json格式,因此您不需要使用note3base.slice(0)模式在消息字段上使用grok过滤器。 只需使用日期过滤器,格式如下:

COMBINEDAPACHELOG

这是我的完整logstash.conf文件,该文件适用于您的示例:

date {
     timezone  => "UTC"
     match     => [ "timestamp" , "yyyy-mm-dd'T'HH:mm:ss.SSSZ"]
}