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