1. 程式人生 > >Logstash filter 使用ruby 進行event事件進行白名單過濾-良心經驗分享

Logstash filter 使用ruby 進行event事件進行白名單過濾-良心經驗分享

      網上關於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)
		"
	}