logstash名称字段动态

时间:2016-05-13 06:54:30

标签: filter logstash

我有一个动态字段,字段格式看起来像

A-B-C::D_[randomNum]

该字段是动态的,因为randonNUM, 我想将' - '更改为'_'并删除[randomNUM] 它将如下所示,

  A_B_C::D

是否有解决此问题的插件/策略?

1 个答案:

答案 0 :(得分:0)

您应该可以使用mutate/gsub过滤器

来实现这一目标
filter {
  mutate {
    gsub => [
      # replace random num suffix
      "fieldname", "_\d+", "",
      # replace all dashes with underscores
      "fieldname", "-", "_"
    ]
  }
}

请务必将fieldname替换为您的实际字段名称。

<强>更新

鉴于您的评论,结果表明它是动态而非价值的字段名称。出于这个原因,你不能使用上面的解决方案,但下一个解决方案应该工作,即使用ruby filter

filter {
  ruby {
    code => "
      newhash = {}
      event.to_hash.each {|key, value| 
        if key =~ /^CISCO/ then
            newkey = key.gsub(/_\d+/, '').gsub('-', '_')
            newhash[newkey] = event[key]
            event.remove(key)
        end
      }
      newhash.each {|key,value|
        event[key] = value
      }
    "
  }
}

此过滤器运行后,您的活动将包含字段A_B_C::D,而不是原始A-B-C::D_num