【问题标题】:How do I replace a string in a field in Logstash如何替换 Logstash 中字段中的字符串
【发布时间】:2017-02-07 14:29:58
【问题描述】:

我有一个来自 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:”?

【问题讨论】:

    标签: logstash elastic-stack


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多