0

Ich muss den Wert eines UNIX-Timestamp-Felds auf @timestamp schreiben, damit ich Daten, die durch logstash fließen, korrekt indizieren kann, ich habe diesen Teil funktioniert. Allerdings habe ich auch die Anforderung, dass der Wert @timestamp die Einfügezeit sein sollte. Zu diesem Zweck habe ich ein temporäres Feld erstellt, das den ursprünglichen Wert @timestamp enthält.Schreiben in @timestamp in LogStash

Hier ist, was ich arbeite mit:

filter { 
    csv { 
     separator => " " # <- this white space is actually a tab, don't change it, it's already perfect 
     skip_empty_columns => true 
     columns => ["timestamp", ...] 
    } 
    # works just fine 
    mutate { 
     add_field => { 
      "tmp" => "%{@timestamp}" 
     } 
    } 
    # works just fine 
    date { 
     match => ["timestamp", "UNIX"] 
     target => "@timestamp" 
    } 
    # this works too 
    mutate { 
     add_field => { 
      "[@metadata][indexDate]" => "%{+YYYY-MM-dd}" 
     } 
    } 
    # @timestamp is not being set back to its original value 
    date { 
     match => ["tmp", "UNIX"] 
     target => "@timestamp" 
    } 
    # works just fine 
    mutate { 
     remove_field => ["tmp"] 
    } 
} 

output { 
    elasticsearch { 
     hosts => "elasticsearch:9200" 
     # this works 
     index => "indexname-%{[@metadata][indexDate]}" 
    } 
} 

Das Problem ist hier:

date { 
    match => ["tmp", "UNIX"] 
    target => "@timestamp" 
} 

@timestamp wird wieder auf den ursprünglichen Wert nicht zu werden. Wenn ich die Daten überprüfe, hat es den gleichen Wert wie das Feld timestamp.

+0

Können Sie einfach entfernen Sie das 'target => ...' in der Regel die '@ timestamp' Das Feld wird standardmäßig ausgewählt. – Val

+0

Ich habe es gerade erst probiert, zuerst im Problembereich dann an beiden Orten. '@ timestamp' enthält immer noch den Wert von' timestamp'. – robbmj

Antwort

2

Wenn Sie das Datum tmp hinzufügen, wird es in ISO8601-Format hinzugefügt, so dass Sie verwenden müssen:

date { 
    match => ["tmp", "ISO8601"] 
    target => "@timestamp" 
} 
+0

Gut gemacht, @Alcanzar! – Val

Verwandte Themen