2016-05-13 114 views
0

我有動力場,場格式看起來像logstash姓名字段動態

A-B-C::D_[randomNum] 

領域是動態的,因爲randonNUM, 我想改變「 - 」到「_」和刪除[ randomNUM] 和它的將是模樣如下,

A_B_C::D 

是否有任何插件/策略來解決這個問題呢?

回答

0

你應該能夠用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

+0

喜瓦爾,謝謝你的回覆!對不起,我在這個問題上沒有更清楚。因爲randomNum,我不怎麼設置字段。我可以指定的只是字段名稱的前綴。像「A-B-C :: D_ *」 – stefansaye

+0

這就是你的字段名稱,而不是你的字段值,對嗎? – Val

+0

是的,字段名稱不是字段值。對於我的例子,輸出看起來像A-B-C :: D_ [randomNum] => field_value ...... – stefansaye