2017-03-28 5 views
0

私はELKを試しています。私は私のログパターン用のGrokフィルター

14:25:43.324 [http-nio-9090-exec-116] INFO com.app.MainApp - Request has been detected 

は私がlogstash.conf

match => { “message” => [ “ (?<timestamp>%{HOUR}:%{MINUTE}:%{SECOND}) \[%{NOTSPACE:thread}\] %{LOGLEVEL:loglevel} %{DATA:Class}\- %{GREEDYDATA:message}“ ]} 

match => { “message” => [ “ %{TIME:timestamp} \[%{NOTSPACE:thread}\] %{LOGLEVEL:loglevel} %{DATA:Class}\- %{GREEDYDATA:message}“ ]} 

にフィルタとして、次のGROKパターンを試してみましたlogstashするには、次のパターンで入力ログにしてみてくださいしかし、私は入力ログがlogstashしたときに、私が取得します次のエラー

[0] "_grokparsefailure" 

上記のログパターンに正しいgrokフィルタを提案できますか?

+0

パターンの最初の文字はスペースです。これは意図されていますか? – Fairy

+0

@Fairyいいえではありません –

+1

あなたの問題があります。スペースを取り除くと、両方のパターンが正しく一致します。 – Fairy

答えて

0

この解析の失敗は、開始スペースを削除した後に固定してしまいました。したがって、スペースを削除した後の作業logstash.confは次のようになります

input { 
    file { 
    path => ["./debug.log"] 
    codec => multiline { 
     # Grok pattern names are valid! :) 
     pattern => "^%{TIMESTAMP_ISO8601} " 
     negate => true 
     what => previous 
    } 
    } 
} 

filter { 
    grok { 
    match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} \[%{NOTSPACE:uid}\] \[%{NOTSPACE:thread}\] %{LOGLEVEL:loglevel} %{DATA:class}\-%{GREEDYDATA:message}" ] 
    overwrite => [ "message" ] 
    } 
    date { 
    match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss" ] 
    } 
} 


output { 
    elasticsearch { hosts => localhost } 
    stdout { codec => rubydebug } 
}