2016-06-25 8 views
2

Ich verwende Logstash (v2.3.3-1), um etwa 800k Dokumente von S3 zu AWS ElasticSearch zu indizieren, und einige Dokumente werden 2 oder 3 Mal statt nur einmal indiziert.logstash Dateien mehrfach indizieren?

Die Dateien sind statisch (nichts aktualisiert sie oder berührt sie) und sie sind sehr klein (jeder ist etwa 1,1 KB).

Der Prozess dauert sehr lange, um auf einem t2.micro (~ 1 Tag) zu laufen.

Die Config Ich verwende ist:

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 } 
} 
} 

Ich betreiben habe dies jetzt zweimal mit dem gleichen Problem (in verschiedenen ES-Indizes) und die Dateien, die> 1x sind jedes Mal anders indiziert werden.

Alle Vorschläge dankbar erhalten!

+0

Dies wird ein Problem mit dem 's3' Eingang, darüber hinaus bin ich mir nicht sicher –

+0

Um, danke? Irgendwelche Vorschläge zum Testen? Ich werde jetzt nur noch dupen (da ich diese Daten nicht regelmäßig neu indizieren müsste). Nächstes Mal werde ich die Dateien in einen neuen S3-Bucket kopieren und dann ein ereignisgesteuertes Lambda verwenden, um es in ES zu verarbeiten. – esperluette

Antwort

1

Der s3-Eingang ist sehr empfindlich. Es zeichnet den Zeitpunkt der letzten verarbeiteten Datei auf, sodass alle Dateien mit demselben Zeitstempel nicht verarbeitet werden und mehrere Logstash-Instanzen nicht aus demselben Bucket lesen können. Wie Sie gesehen haben, ist es auch sehr langsam zu bestimmen, welche Dateien zu verarbeiten sind (ein guter Teil der Schuld geht hier auf Amazon).

s3 funktioniert nur für mich, wenn ich einen einzelnen logstash zum Lesen der Dateien verwende, und lösche (oder in einen anderen Bucket/Ordner sichern) die Dateien, um den ursprünglichen Bucket so leer wie möglich zu halten und sincedb_path dann auf/zu setzen dev/null.

+0

Vielen Dank, das ist sehr hilfreich! – esperluette