Logstash: Wert zwischen Ereignissen beibehalten

Ich habe ein Datum, das nur einmal in jeder Protokolldatei vorhanden ist, und ich versuche, dieses Datum zu allen folgenden Ereignissen hinzuzufügen, nachdem es einmal abgeglichen wurde, sodass es in gewisser Weise wie eine globale Variable wirkt. (Das Datum steht oben im Dokument und ich kann @ nicht verwendemultiline oder ändern Sie den Dateinamen oder den Inhalt)

Für diesen Zweck benutze ich eingrep Filter mitdrop => false.

grok {
    patterns_dir => "[...]"
    match => [ "message", "%{DATELINE}" ]
    tag_on_failure => [ ]
}
grep {
    add_field => { "grepdate" => "%{mydate}" }
    drop => false
}
date {
    locale => "en"
    timezone => "Europe/Paris"
    match => [ "grepdate", "yyyyMMdd" ]
    target => "grepdate"
}

Regulären Ausdruck

DATELINE (= Date: (?<mydate>[0-9]{8}))

as mir auffällt ist, dass dasgrepdate Feld wird korrekt zu allen Ereignissen hinzugefügt - was ich will - aber der Wert dieses Feldes ist nicht das Datum selbst (der Wert von%{mydate}), aber die tatsächliche Zeichenfolge"%{mydate}", außer wenn tatsächlich zum ersten Mal eine Übereinstimmung gefunden wird (beim Parsen des tatsächlichen Datums in meiner Protokolldatei wird dasgrepdate Feld enthält den korrekten Wert)

Was kann ich tun, um das zu beheben?

Jede Hilfe wird sehr geschätzt.

Bearbeiten

Ich versuche jetzt eine Lösung, die die Verwendung des @ enthämemorizeplugin. Ich erhalte jedoch den folgenden Fehler:

Kann nicht mehr als einen Filterworker verwenden, da die folgenden Plugins nicht mit mehr als einem Worker funktionieren: memorize

Gibt es eine Möglichkeit, diesen Filter threadsicher zu machen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage