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