0
我有动力场,场格式看起来像logstash姓名字段动态
A-B-C::D_[randomNum]
领域是动态的,因为randonNUM, 我想改变“ - ”到“_”和删除[ randomNUM] 和它的将是模样如下,
A_B_C::D
是否有任何插件/策略来解决这个问题呢?
我有动力场,场格式看起来像logstash姓名字段动态
A-B-C::D_[randomNum]
领域是动态的,因为randonNUM, 我想改变“ - ”到“_”和删除[ randomNUM] 和它的将是模样如下,
A_B_C::D
是否有任何插件/策略来解决这个问题呢?
你应该能够用mutate/gsub
过滤器来实现这个
filter {
mutate {
gsub => [
# replace random num suffix
"fieldname", "_\d+", "",
# replace all dashes with underscores
"fieldname", "-", "_"
]
}
}
确保您的实际字段名称,以取代fieldname
。
UPDATE
考虑您的意见,事实证明它的字段名是动态的,而不是价值。出于这个原因,你不能使用上述解决办法,但下一个应该工作,用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
喜瓦尔,谢谢你的回复!对不起,我在这个问题上没有更清楚。因为randomNum,我不怎么设置字段。我可以指定的只是字段名称的前缀。像“A-B-C :: D_ *” – stefansaye
这就是你的字段名称,而不是你的字段值,对吗? – Val
是的,字段名称不是字段值。对于我的例子,输出看起来像A-B-C :: D_ [randomNum] => field_value ...... – stefansaye