0
我想從傳入的logstash事件中捕獲IP地址字段,並將它傳遞給一個shell腳本以與靜態黑名單進行比較。問題是,我能夠使用put打印IP地址,但無法捕獲將它傳遞給system()
在ruby過濾器中的調用。這是我的示例配置。Logstash紅寶石過濾器和事件字段
我使用logstash 2.0
Sample input = {"name":"xyz", "source_ip":"8.8.8.8"}
input {
stdin {
codec => json
}
}
filter {
ruby {
code => "
# puts event['source_ip'] # This always works
ip = event['source_ip']
system('echo ${ip}') # This echoes ${ip} instead of value !
"
}
}
我也試過 'echo #${ip}
',但它只是打印0
。
它不會回答你的紅寶石的問題,但你有沒有考慮在翻譯{}過濾器? –
我不知道翻譯{},只是看着它。這是一個好主意,但我的conf文件中的很多其他內容已經使用ruby過濾器完成了,我認爲它更加靈活。 exec()和pipe()輸出插件在我的用例中沒有意義。我很想在紅寶石本身做到這一點,我相信這是我失蹤的基本知識。 – Deep
如果您有時間,最好編輯您的問題,以反映logstash的新版本不支持直接訪問像'event ['source_ip']'這樣的字段。您現在可以使用訪問器窗體訪問這些字段:'event.get('source_ip')'。乾杯! – Niko