我正在对这些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
}
}
答案 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}
模式替换一个或多个空格的空格。