2015-08-31 120 views
0

ruby​​過濾器裏面的ruby過濾器在=>處引發錯誤。我很困惑如何使它工作。我應該從具有許多json對象的日誌文件中刪除字段。我正在使用非常長的鍵刪除條目。logstash中的Ruby插件不起作用

input { 
file { 
type => "syslog" 

# Wildcards work, here :) 
path => ["C:\Users\ppurush\Desktop\test\*.log"] 


} 
} 

filter{ 
ruby { 
code =>" 

    keyval = [url][queryString].split('&') 

      for field in keyval 
       result = field.split(': ') 
       key = result[0] 
       if key =~ /^.{50,}$/ 
      ruby { 
       remove_field =>"[ "[url][queryString]" ]" 
       } 
      end 
" 
    } 
} 

output { 
    stdout { } 
    elasticsearch { embedded => true } 
} 

回答

2

的Ruby代碼是由雙引號包圍,這意味着你不能使用雙引號 Ruby代碼本身。

另外,嘗試捕捉錯誤:

ruby { 
    code => " 

     begin 

     # your great code goes here 

     rescue Exception => e 

     event['ruby_exception'] = 'YOUR_FILTER_NAME: ' + e.message 

     end 

    " 
} 
+0

感謝。這是一個非常有效的答案。帶雙引號的雙引號。 – Pooja

+0

我無法訪問[url] [queryString],因爲它是json。有什麼辦法去解決這個問題? – Pooja

+0

當你在紅寶石裏時,一切都在「事件」中。嘗試事件['url'] ['queryString'] –