Logstash filter 使用ruby 進行event事件進行白名單過濾-良心經驗分享
阿新 • • 發佈:2018-11-19
網上關於logstash的filter,使用ruby的資料特別少。今天用了一下,看了點ruby語法,踩了點坑。
需求就是做一個白名單,進行過濾logstash的event。因為白名單挺長的,所以,直接寫在if 或者寫到not in,或者是用prune都不友好。唯獨使用強大的ruby了,但是自己也沒用學過ruby。第一天初次使用,踩了幾個坑。
首先,在logstash的filer中,使用ruby,code裡面的程式碼已經有“ 雙引號引用了,所以,程式碼裡面如果你要表示字串,最好使用單引號‘,或者使用轉義字元\",否則就會報 expected one of # ,{,} 這樣的異常。
第二點,取消過濾的這個動作,不能放到if 之後,這是很神奇的。因為這個,我坑了很久才搞定。之前我放到
if 判斷語句
event.cancel
end
這樣寫是沒有效果的。
ruby { code => " file = File.open('/home/luoei/logstash-5.2.1/config/filter-whilelist.txt', 'r') text = file.read file.close event.cancel if !text.include?(event.project) " }