2017-04-11 6 views
0

ich folgende Konfiguration haben:Logstash: Verwendung als document_id Offset

FileBeat -> Logstash -> Elasticsearch -> Kibana (alle 5.1.1)

Wenn ich die Protokolldatei drücken (JSON) in Filebeat, und wenn ich versuche, es in Kibana Interface zu sehen, werden die gleichen Protokolle 3-4 Mal hinzugefügt (Duplikate). Nach dem Überprüfen der FileBeat-Protokolle wurde mir klar, dass dies daran liegen könnte, dass Filebeat keine Bestätigung für gesendete Logs erhält und daher weiter sendet. zu stoppen doppelte Dokumente zu erhalten Ich denke, ich muss eine document_id in Logstash Config-Datei verwenden.
heißt

output 
{ 
    elasticsearch { 
     document_id => "%{offset}" 
     index => "ap-index" 
     hosts => ["localhost:9222"] 
    } 
} 

Meine Frage ist, Ist das Offset-Feld für jedes Dokument einzigartig? und Ist das ein richtiger Weg, um Duplikate zu stoppen?

Antwort

1

Wenn Filebeat keine Bestätigungen von Logstash empfängt, ist dies ein Zeichen oder ein Problem und Sie sollten zuerst die Ursache finden (es könnte zu Engpässen in Ihrer Pipeline kommen).

Der Offset ist nicht eindeutig, wenn Sie mehr als eine Protokolldatei haben oder eine Protokollrotation durchführen. Wenn Ihre Protokollnachrichten Zeitstempel enthalten, empfehle ich, einen Fingerabdruckfilter zu verwenden, um einen Hash der Nachricht zu generieren. Verwenden Sie dann den Fingerabdruck-Hash als Dokument-ID in Elasticsearch.

input { 
    beats { 
    port => 5044 
    } 
} 

filter { 
    fingerprint { 
    method => "SHA1" 
    key => "some_random_hmac_key" 
    source => ["[beat][hostname]", "offset", "message"] 
    concatenate_sources => true 
    target => "[@metadata][id]" 
    } 
} 

output { 
    elasticsearch { 
    hosts => "localhost:9200" 
    manage_template => false 
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 
    document_type => "%{[@metadata][type]}" 
    document_id =>"%{[@metadata][id]}" 
    } 
} 
+0

Ich könnte mehr als eine Protokolldatei haben und ja es kann eine Protokollrotation sein. Auch mein Timestamp ist möglicherweise nicht einzigartig. In diesem Fall kann Hash unterschiedlich sein ?? –

+0

Sie können diesen Hash ändern, um den durch Filebeat angegebenen Offset zu berücksichtigen. Wenn Ihre Zeitstempel wie in Sekunden eine niedrige Auflösung haben, würde ich dies tun. Ich werde die Antwort aktualisieren, um den Offset aufzunehmen. –

Verwandte Themen