1

入力/ファイルと出力/s3 でコーデックの組み合わせを使用して、logstash で奇妙な動作が発生しています。output/s3 プラグインでコーデックを指定しない限り、S3 にアップロードするパーツ ファイルを取得できないため、output/s3 logstash プラグインに問題があるようです。

私は Java アプリケーション ログ ファイルを追跡しているので、理想的には入力/ファイル プラグインを使用してディレクトリ内のすべてのログ ファイルを監視し、発生したスタック トレース (およびそれらの新しい行) が同じログスタッシュ イベントにラップされていることを確認します。私はこれが好きです:

input {
  file {
    path => "C:/some/directory/logs/*"      
    codec => multiline {
        pattern => "^%{DATESTAMP}"
        negate => true
        what => "previous"
    }
  }
}

これにより、スタック トレースが親イベントに適切に追加されます。次に、2 つの異なる output/s3 操作を実行します (基本的に、生のログを 1 行ずつ再作成し、イベント json をアップロードします)。

output {    
 s3{
     access_key_id => "mykey"
     secret_access_key => "myseckey"
     region => "us-east-1"
     bucket => "somebucket"
     size_file => 10000
     upload_workers_count => 2
     restore => true
     prefix => "rawlogs/"
     temporary_directory => "C:/Temp/LogStash/raw"
     time_file => 5  
 }
 s3{
     access_key_id => "mykey"
     secret_access_key => "myseckey"
     region => "us-east-1"
     bucket => "somebucket"
     size_file => 10000
     upload_workers_count => 2
     restore => true
     prefix => "jsoneventlogs/"
     temporary_directory => "C:/Temp/LogStash/json"
     time_file => 5
     codec => "json_lines"
 }
}

「json_lines」コーデックを使用する S3 アップロードは正常に機能しますが、デフォルトの「プレーン」コーデックを使用する生ログのアップロードはまったく機能しません。ファイルは一時ディレクトリにあり、S3 にプッシュされることはありません。「ライン」コーデックを使用しようとしましたが、それでも同じ動作です。入力/ファイル プラグインから「マルチライン」コーデックを削除し、出力/S3 raw プラグインで使用すると、S3 に問題なくアップロードされますが、スタックトレースの各改行は独自のイベントとして受信されるため、コーデックはその仕事をしていないようです。

output/S3 プラグインが json_lines と multiline でのみ動作するように見える理由は何ですか?

4

0 に答える 0