2016-05-31 14 views
0

私はelasticsearch 1.3.4とkibana 3.1.1でlogstash-1.4.0を使用しています(私は時代遅れだと思います。 。grokデバッガで動作していてもGrokフィルタが動作しない

ログの例は:

2016年5月31日午前16時05分33秒RequestManager [INFO]は手動フラグLOLROFLin TRALALA 123456Wasは真

マイGROKフィルタに変更された:

filter { 
    grok { 
     match => { "message" => "%{DATESTAMP:timestamp} %{WORD:clazz} %{NOTSPACE:level} %{GREEDYDATA:content}"} 
    } 

    if (!([stack_trace])) and (!([clazz] == "RequestAsset")) { 
     drop {} 
    } 
} 

私の質問は

  1. なぜ木場のgrokフィールドが表示されないのですか?デフォルトのフィールドだけが表示されますが、私は表示されません。 Grok Debuggerは成功を示していますが、kibanaは機能しません。

  2. 私の目標は、スタックトレースを持たないログメッセージを落とすことです。クラスから来たものではありません(私のgrokフィルタにclazzと呼ばれる) "RequestAsset"。これはうまくいくはずですか?別のフィルタでgrokフィルタによって作成されたフィールドを使用できますか?

編集:私は、私はすでにその内容にログをseperates log4jのプラグインを使用していた、とフィールドのメッセージがすでにちょうどメッセージそのものだった、何が悪かったのか実感しました。

答えて

0

あなたのgrokフィルタはgrok debuggerでテストされており、失敗しました。だから私はそれを書き直しました。

ここに正しいgrokフィルタがあります。

filter { 
grok { 
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{WORD:clazz} %{NOTSPACE:level} %{GREEDYDATA:content}"} 
} 

if (!([stack_trace])) and (!([clazz] == "RequestAsset")) { 
    drop {} 
} 

TIMESTAMP_ISO8601 =>%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?

あなたはKibanaで "_grokparsefailure" を参照してください場合は、あなたのGROKフィルタが失敗したことを知っています。

2番目の質問では、OR演算子を使用しないでください。

+0

2つの違いはありませんか?私はまたあなたが言いましたGrokデバッガでそれらを両方試しましたが、どちらもうまくいきませんでした。私はこれを使用して、両方とも動作します:https://grokdebug.herokuapp.com/ – user1137582

+0

申し訳ありませんが、私は間違ったgrokステートメントを貼り付けました。編集内容を確認する必要があります。 –

0

私は間違ったことを認識しました。すでにlog4jプラグインを使用していましたが、ログはその内容に既に分かれています。フィールドメッセージはすでにメッセージそのものでした。

関連する問題