2017-02-07 1 views
2

J'ai un champ d'adresse IP du journal des événements Windows qui contient des caractères tels que ":: fffff:" devant l'adresse IP. Je ne peux pas changer la source ici, donc je dois corriger cela dans Logstash.Comment remplacer une chaîne dans un champ dans Logstash

Je dois être fou de googling, mais je ne peux vraiment pas trouver un moyen simple de supprimer ces caractères des champs d'adresse IP dans logstash.

J'ai essayé par exemple

if ("" in [event_data][IpAddress]) { 
     mutate { 
       add_field => { "client-host" => "%{[event_data][IpAddress]}"} 
       gsub => ["client-host", ":", ""] 
     } 
     dns { 
      action => "replace" 
      reverse => [ "client-host" ] 
     } 
} 

mais pas de chance, le côlon est toujours là. Comment puis-je remplacer ":: ffff:" dans la chaîne ":: ffff: 10.0.36.39" dans Logstash?

Répondre

3

Le add_field n'est pas exécuté avant le gsub, vous devez donc le diviser en deux blocs mutate.

mutate { 
    add_field => { "client-host" => "%{[event_data][IpAddress]}"} 
} 
mutate { 
    gsub => ["client-host", "::ffff:", ""] 
} 

L'ordre specifc que mutate œuvres:

rename(event) if @rename 
update(event) if @update 
replace(event) if @replace 
convert(event) if @convert 
gsub(event) if @gsub 
uppercase(event) if @uppercase 
lowercase(event) if @lowercase 
strip(event) if @strip 
remove(event) if @remove 
split(event) if @split 
join(event) if @join 
merge(event) if @merge 

filter_matched(event) 

Où filter_matched a toutes les actions standard comme add_field