如何替换Logstash中字段中的字符串

时间:2017-02-07 14:29:59

标签: logstash elastic-stack

我在Windows事件日志中有一个IP地址字段,其中包含IP地址前面的“:: fffff:”字符。我无法在此处更改源代码,因此我必须在Logstash中修复此问题。

我一定是在谷歌搜索,但我真的找不到一个简单的方法来从logstash中的ip-address字段中删除这些字符。

我试过了例如

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

但没有运气,冒号仍在那里。如何在Logstash中的字符串“:: ffff:10.0.36.39”中替换“:: ffff:”?

1 个答案:

答案 0 :(得分:3)

add_field直到gsub之后才会执行,因此您需要将其分解为两个mutate块。

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

mutate的特定顺序:

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)

filter_matched具有add_field

等所有标准操作