2016-06-25 2 views
2

私は、S3からAWS ElasticSearchまで約800Kのドキュメントを索引付けするためにlogstash(v2.3.3-1)を使用していますが、一部のドキュメントは2回または3回索引付けされています。ログファイルを複数回索引付けしていますか?

ファイルは静的であり(更新や更新には何も表示されません)、サイズは非常に小さく(それぞれ約1.1KBです)。

t2.micro(〜1day)で実行するには非常に時間がかかります。

私が使用している設定は、次のとおりです。

input { 

s3 { 
bucket => "$BUCKETNAME" 
codec => "json" 
region => "$REGION" 
access_key_id => '$KEY' 
secret_access_key => '$KEY' 
type => 's3' 
} 
} 

filter { 
    if [type] == "s3" { 
    metrics { 
     meter => "events" 
     add_tag => "metric" 
    } 
    } 
} 

output { 

if "metric" in [tags] { 
    stdout { codec => line { 
     format => "rate: %{[events][rate_1m]}" 
      } 
     } 
} else { 
    amazon_es { 
     hosts => [$HOST] 
     region => "$REGION" 
     index => "$INDEXNAME" 
     aws_access_key_id => '$KEY' 
     aws_secret_access_key => '$KEY' 
     document_type => "$TYPE" 
    } 

    stdout { codec => rubydebug } 
} 
} 

私は(別のES指数に)同じ問題で、今これを2回実行したと> 1Xをインデックス化されているファイルは毎回異なります。

ご挨拶いただきありがとうございます。

+0

これは 's3'の入力に問題があります。それ以上のことはわかりません。 –

+0

ええ、ありがとう?どのようにテストするための任意の提案?私はちょうど今すぐ捨てるつもりです(このデータを定期的に再インデックスする必要はありません)。次回は、新しいS3バケットにファイルをコピーし、イベント駆動のラムダを使用してESに処理するつもりだと思います。 – esperluette

答えて

1

s3入力は非常に壊れやすいです。最後に処理されたファイルの時刻を記録するので、同じタイムスタンプを共有するファイルは処理されず、複数のlogstashインスタンスは同じバケットから読み取ることができません。あなたが見てきたように、処理するファイルを決定するのは痛いほど遅いです(責任の大部分はここでアマゾンに行きます)。

s3は、ファイルを読み込んで(または別のバケット/フォルダにバックアップして)元のバケットをできるだけ空のままにしてから、 dev/null。

+0

ありがとう、これはとても役に立ちます! – esperluette

関連する問題