2017-07-11 12 views
0

タイトルが残念です。私の場合は本当に1つの文で説明できませんでした。私は弾性スタック(Logstash、Elasticsearch、Kibana)で使用するLogstashで解析したい(4ギガバイト程度)のログ・ファイルの大規模なセットを持っているMongoDBからLogstashで処理中のログファイルにデータを追加し、Elasticsearchに解析しました

  1. は、ここに私の状況です。

  2. ログには、Logstashで正常に解析されたシリアル番号があります。この数値は、MongoDBコレクションのインデックスに対応します。それぞれのログが解析されているので、私は解析された番号でコレクションを照会して、Elasticsearchに渡される最終出力に含めるデータを取得できるようにしたい。

ここでは、わかりやすい例を示します。私は生ログがあるとします。解析されたログはElasticsearchに送信されます前に

2017-11-20 14:24:14.011 123 log_number_one 

を、私は、123と私のMongoDBのコレクションを照会し、データdata1data2がElasticsearchに送信される文書に追加する取得したいですので、私の最終的な結果は、フィールドのようなものに似てあります。

{ 
    timestamp: 2017-11-20 14:24:14.011, 
    serial: 123, 
    data1: "foo", 
    data2: "bar", 
    log: log_number_one 
} 

これを実現する簡単な方法は、私は仮定し、単にログを前処理とLogstashを介してそれらを解析する前にMongoDBの数字を実行することです。しかし、私は4GBのログファイルを持っているかのように見て、これを1回の掃討で達成する方法を期待していました。私は、私のエッジケースがルビーフィルタープラグインで解決できるかどうか、私はおそらく上記を行うために任意のルビーコードを実行することができますか?

ご迷惑をおかけして申し訳ございません。 Christian_Dahlqvistから

答えて

0

回答、弾性チームのメンバー(彼にすべてのクレジット):

レコード数とのMongoDBのデータの合計サイズに応じて、(それが合理的なサイズのデータ​​セットであると仮定した場合)各シリアル番号がJSON形式のデータの文字列表現に関連付けられているファイルにデータを抽出することができます。その後、translate filterを使用してシリアル番号に基づいてシリアル化されたJSONでフィールドを設定し、次にsonフィルタを使用してこれを解析し、イベントに追加することができます。

参考:https://discuss.elastic.co/t/appending-data-from-mongodb-into-log-files-being-processed-by-logstash-and-parsed-into-elasticsearch/92564/2

関連する問題