GROK匹配访问日志的问题

时间:2016-10-10 19:30:09

标签: logstash logstash-grok

我正在对这些apache日志中的一些grokparsefailure,这对我来说没有意义。其中一个kibana标签是grokparsefailure。显然这里有些问题,但我无法弄清楚那是什么。 导致失败的示例日志条目:

127.0.0.1 -  -  [10/Oct/2016:19:05:54 +0000] "POST /v1/api/query.random HTTP/1.1" 201 - "-" "-"  188

Logstash输出配置文件:

filter {
 if [type] == "access" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
  }
}
filter {
 if [type] == "requests" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
  }
}
output {
  elasticsearch {
    hosts => ["http://ESCLUSTER:9200"]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "[type]"
  }
  stdout {
    codec => rubydebug
  }
}

1 个答案:

答案 0 :(得分:0)

两个-之间以及-[之间有两个空格而不是一个:127.0.0.1 - - [

pattern%{IPORHOST:clientip} %{HTTPDUSER:ident} %{HTTPDUSER:auth})期望此时只有一个空格。

因此,您要么更正日志格式,以便所有日志格式相同,或者将%{COMBINEDAPACHELOG}替换为

%{IPORHOST:clientip} %{HTTPDUSER:ident}%{SPACE}%{HTTPDUSER:auth}%{SPACE}\[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}

此模式等同于COMBINEDAPACHELOG模式,但我在开头用%{SPACE}模式替换一个或多个空格的空格。