Logstashを使用してnginxログを解析しようとしていますが、この_grokparsefailure
タグをNginx $ remote_userを含む行にすることを除いて、すべてうまく見えます。 「 - 」$のREMOTE_USERがある場合には(何の$ REMOTE_USERが指定されていないデフォルト値)、Logstashは仕事をするが、[email protected]
のような本当の$ REMOTE_USERと、それは失敗し、_grokparsefailure
タグ入れる:Nginxログを解析するときの_grokparsefailure
127.0.0.1を - - Mozilla/5.0(X11; Linux x86_64)AppleWebKit/537.36(KHTML、Geckoのように) - [17/Feb/2017:23:14:08 +0100] "GET/favicon.ico HTTP/1.1" 302 169 "http://training-hub.tn/trainer/" )クローム/ 56.0.2924.87 サファリ/ 537.36"
=====>細かい作品
127.0.0.1 - [email protected] [17/Feb/2017:23:14:07 +0100]「GET /trainer/templates/home.tmpl.html HTTP/1.1」304 0 「http://training-hub.tn/trainer/」「Mozilla /5.0(X11; Linuxのx86_64で) のAppleWebKit/537.36(ヤモリのようにKHTML、)クローム/ 56.0.2924.87 サファリ/ 537.36"
=====>_grokparsefailure
タグと私は使用していますライン
のログを解析するために失敗しますこの設定ファイル:
input {
file {
path => "/home/dev/node/training-hub/logs/access_log"
start_position => "beginning"
sincedb_path => "/dev/null"
ignore_older => 0
type => "logs"
}
}
filter {
if[type] == "logs" {
mutate {
gsub => ["message", "::ffff:", ""]
}
grok {
match=> [
"message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}",
"message" , "%{COMMONAPACHELOG}+%{GREEDYDATA:extra_fields}"
]
overwrite=> [ "message" ]
}
mutate {
convert=> ["response", "integer"]
convert=> ["bytes", "integer"]
convert=> ["responsetime", "float"]
}
geoip {
source => "clientip"
target => "geoip"
database => "/etc/logstash/GeoLite2-City.mmdb"
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float"]
}
date {
match=> [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
remove_field=> [ "timestamp" ]
}
useragent {
source=> "agent"
}
}
}
output { elasticsearch { hosts => "localhost:9200" } }