2017-01-26 15 views
0

私は、ELKスタックに関してそのようなことをログに記録するのが初めてです。ログファイルには、データを記録するさまざまなプロセスがあります。各プロセスは、異なるパターンでログを書き込みます。私はこのログファイルを解析したい。 %{SYSLOGHOST:LOGSOURCE}%{SYSLOGPROG} + %{SRCFILE:SRCFILE}:%{NUMBER:行番号:このログ・ファイル内の各ログは、異なるパターンのログを持つログファイルの解析Logstash

% {タイムスタンプSYSLOGTIMESTAMP}以下GROKパターンで開始されますSRCFILEが [-ZA-Z0-9 ._-] +

として定義される}私は、このファイル内の各プロセスのログからのログの異なるタイプができるように、私は、このファイルを解析する方法を教えてください解析される。

答えて

1

あなたはログファイルに合格しようとしているので、あなたが指定したパスからファイルまたはファイルの数xを取得するために、file入力プラグインを使用する必要があります。

input { 

     file { 
      path => "/your/path/*" 
      exclude => "*.gz" 
      start_position => "beginning" 
      ignore_older => 0 
      sincedb_path => "/dev/null" 
     } 
} 

上記は、あなたが再現するためだけのサンプルです:だから、基本的なinputはこのような何かを見ることができます。したがって、ファイルを取得して1行ずつ処理を開始すると、grokフィルタを使用して、ログファイルのキーワードと一致させることができます。サンプルフィルタはこのようなものになります:

grok { 
    patterns_dir => ["/pathto/patterns"] 
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:logsource} %{SYSLOGPROG}: + %{SRCFILE:srcfile}:%{NUMBER:linenumber} where SRCFILE is defined as [a-zA-Z0-9._-]+" }   
} 

をあなたはと同じ行でそれを持つことができ、単一のファイルOR内に印刷ログの異なる種類を持っている場合は、異なるフィルタを使用する必要があります,カンマ区切りの値。以下のような何か:

grok { 
     match => { "message" => [ 
       "TYPE1,%{WORD:a1},%{WORD:a2},%{WORD:a3},%{POSINT:a4}", 
       "TYPE2,%{WORD:b1},%{WORD:b2},%{WORD:b3},%{WORD:b4}", 
       "TYPE3,%{POSINT:c1},%{WORD:c2},%{POSINT:c3},%{WORD:c4}" ] 
     } 
    } 

そして、あなたはあなたが右のそれの中に必要なすべての値を持っているので、多分あなたは、messageで遊ぶことができます。それが役に立てば幸い!

関連する問題