2013-12-17 17 views
12

ちょっとした助けを探しています...私はLogstashをインストールしましたが(ElasticSearchと同じですが)、私は最初のフィルタに苦労しています。Logstashフィルタ入門

テストとして、6行のトリムログファイルから読み取るように設定しました。各行は[11/5/13 4:09:21:327 PST]のようなタイムスタンプで始まります他のデータの束によって。

今のところ私はこのファイルを読むためにconfファイルを用意していますが、私は行と一致するように非常に基本的なgrokフィルタを実行しようとしています。おそらくタイムスタンプをつかみ、残りのデータ分割を開始する)。ここで

は私が持っているものです。

input { 
    file { 
    type => "chris" 
    path => "/home/chris/Documents/test.log" 
    } 
} 
filter { 
    grok { 
    type => "chris" 
    pattern => "%{GREEDYDATA:logline}" 
    } 
} 
output { 
    stdout {debug => true debug_format => "json"} 
} 

私は一種の私がダウンラインとフィルタリングを壊し始めることができ、私はLogstashを実行したとき、それは各ラインと出力を一致させるだろうと(期待して)期待していました私のパターンを調整するが、私はこの最初の基本的なビットを動作させることができないので、私は少し困惑しています。

似たようなconfファイルを持っている人はいますか?大丈夫ですか?私が見つけることができる例のほとんどは、より高度であり、私はゲートから出ようとしているように思われます。

ありがとう、

Chris。

+0

実行しているLogstashのバージョンは? [Grok](http://logstash.net/docs/1.3.1/filters/grok)には1.2以上のパターンパラメータがありませんでした。 – rutter

答えて

12

フィルタの内容の取り出しを開始してください。 logstash GROKフィルタプラグインの現在のバージョン(1.3.2)について

ドキュメントはここ http://logstash.net/docs/1.3.2/filters/grok

ているあなたは、あなたがダウンロードしたlogstashのバージョンにドキュメントの正しいバージョンを見ていることを確認します。

例GROKフィルタは次のようになります。

filter { 
    grok { 
    match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ] 
    } 
} 

しかし、これはあなたのデータと一致することはほとんどありません。

"message"はデフォルトのフィールドですので、ログ全体が表示されますので、お勧めです。

次の部分では、ログラインを読み込んでIP、WORDなどの事前定義されたGrokパターンと一致する部分を5つの新しいフィールド、クライアント、メソッド、要求、バイト、および継続時間を作成します。

実際には別のloglineフィールドにメッセージフィールドを複製しますが、起動にどこかにあるだろう
filter { 
    grok { 
    match => [ "message", "%{GREEDYDATA:logline}" ] 
    } 
} 

から始め

。より多くのGrokパターンをフィルタに追加すると、loglineフィールドにはgrokked以外のものしか含まれません。

あなたはここにあなたのGROKパターンテストすることができ http://grokdebug.herokuapp.com/

あなたはおそらくそれ自身のフィールドにタイムスタンプを完全に理解するためにGROKフィルタを使用して、実際に使用する日付フィルタを使用したいと思うでしょう

そのログのタイムスタンプなど。

filter { 
    grok { 
    match => [ "message", "%{TIMESTAMP_ISO8601:syslog_timestamp} %{GREEDYDATA:syslog5424_msg}" ] 
    } 
    date { 
    match => [ "syslog_timestamp", "ISO8601" ] 
    } 
} 

TIMESTAMP_ISO8601は非常に冗長な形式(http://grokdebug.herokuapp.com/patterns#)でタイムスタンプと一致したが、これはあなたのために動作しない場合があります。

ISO8601は、日付フィルタにあらかじめ指定されている形式と同じですが、代わりに手動で日付形式を指定する必要があります。 ドキュメントを参照してください: http://logstash.net/docs/1.3.2/filters/date