2017-05-17 1 views
1

Ich suche im Internet eine Möglichkeit, eine Variable in logstash zu setzen und den Wert zu verwenden oder zu ändern, wenn ein Begriff einem Muster entspricht.Ist es möglich, ein Feld durch einen vorherigen Wert in logstash zu ändern

Hier wird das ein Beispiel für meine Datenquelle:

2017-04-12 15:49:57,641|OK|file1|98||| 
    2017-04-12 15:49:58,929|OK|file2|1387|null|msg_fils| 
    2017-04-12 15:49:58,931|OK|file3|2|msg_pere|msg_fils| 
    2017-04-12 15:50:17,666|OK|file1|25||| 
    2017-04-12 15:50:17,929|OK|file2|1387|null|msg_fils| 

ich diesen grok Code bin mit meiner Quelle zu analysieren.

grok { 
    match => {"message" => '%{TIMESTAMP_ISO8601:msgdates:date}\|%{WORD:verb}\|%{DATA:component}\|%{NUMBER:temps:int}\|%{DATA:msg_pere}\|%{DATA:msg_fils}\|'} 
} 

Aber in der Tat ich das erste Feld von dem vorherigen Wert der Linie ändern möchten, die

file1

enthält, die Sie mir sagen kann, ob es möglich ist oder nicht?

Danke

Antwort

0

Ich habe eine Lösung für mein Problem gefunden. Ich teile dir die Lösung für mein Problem. Ich verwende ein Plugin namens logstash-Filter-einprägen, kann es durch den Befehl installieren sein:

logstash-Plugin logstash-Filter-merken

Also mein Filter ist wie folgt installieren:

grok { 
    match => {"message" => '%{TIMESTAMP_ISO8601:msgdates:date}\|%{WORD:verb}\|%{DATA:component}\|%{NUMBER:temps:int}\|%{DATA:msg_pere}\|%{DATA:msg_fils}\|'} 
} 
if [component] =~ "file1" { 
    mutate { 
     add_field => [ "msg_id", "%{msgdates}" ] 
    } 
    memorize { 
     fields => [ "msg_id" ] 
     default => { "msg_id" => "NOTFOUND" } 
    }   } 
memorize { 
    fields => [ "msg_id9" ] 
} 

Ich hoffe, dass es für andere nützlich sein kann.

Verwandte Themen