Grokの構文解析に問題があります。 ElasticSearch/Kibanaでは、一致する行に_grokparsefailureタグが表示されます。
これが私のlogstash設定です:
input {
file {
type => logfile
path => ["/var/log/mylog.log"]
}
}
filter {
if [type] == "logfile"
{
mutate {
gsub => ["message","\"","'"]
}
grok
{ match => { "message" => "L %{DATE} - %{TIME}: " } }
}
}
output {
elasticsearch { Host => localhost port => 9300 }
}
一致させようとしている行/パターン:L 08/02/2014-22:55:49:ログファイルが閉じています: "終了しました"
http://grokdebug.herokuapp.com/ でデバッガを試しましたが、正常に動作し、パターンは正しく一致します。
解析したい行に二重引用符が含まれている可能性があります。また、grokの処理方法とエスケープ方法に問題がある可能性があることを確認しました。したがって、問題を回避するために "を"で置き換えるように変異させようとしましたが、運はありませんでした。
何か案は ?どうすればこれをデバッグできますか?
ありがとう
問題が見つかりました、それは二重引用符の周りでした。
単純な引用を使用してgrokフィルターを定義し、二重引用符をエスケープする必要がありました。
match => { 'message' => 'L %{DATE:date} - %{TIME:time}: \"string_between_doublequotes\" '