elasticsearch Logstash:从inout或putput部分触发python脚本
我使用logstash和elasticsearch,从不同服务器的filebeats中获取数据。 我有一个要求,当一个字段等于某个值时,我想执行一个python脚本。例如,如果([response]=~/^5\d\d/){}。i、 例如,当日志中出现500个错误时,我希望执行一个python脚本以进行进一步的操作 我搜索过谷歌、elasticforums,也尝试过以下内容,但到目前为止运气不佳 我使用output exec插件来执行代码elasticsearch Logstash:从inout或putput部分触发python脚本,elasticsearch,logstash,elasticsearch,Logstash,我使用logstash和elasticsearch,从不同服务器的filebeats中获取数据。 我有一个要求,当一个字段等于某个值时,我想执行一个python脚本。例如,如果([response]=~/^5\d\d/){}。i、 例如,当日志中出现500个错误时,我希望执行一个python脚本以进行进一步的操作 我搜索过谷歌、elasticforums,也尝试过以下内容,但到目前为止运气不佳 我使用output exec插件来执行代码 exec{command=> "/usr/bin/p
exec{command=> "/usr/bin/python3.6 /home/xxxx/xxxx.py %{message}"}
我在logstash日志中将空行视为输出。
请注意,当我跑步时
exec{command=> "echo %{message}"}
我可以看到输出。但我不能执行上面的python脚本
我尝试在输入过滤器中使用ruby代码
filter{
ruby{
code => 'require "open3"
message = event.get("message")
cmd = "python3.6 /home/xxxx/xxxx.py #{message}"
puts "some text"
puts #{message}
'
}
}
运气不好。如果有人能帮助解决这个问题,我们将不胜感激
谢谢,
Kiran我猜可能是(A)脚本正在以它不适合的格式接收
消息
,比如它可能是散列或以某种方式编码的funky,或者(B)脚本由于某种原因不可执行,可能是权限、python可执行文件等。您可以尝试手动运行脚本吗,正如您在命令=>
指令中使用的一样,使用与您使用echo
命令时打印的相同消息?是的,我可以手动运行脚本,而且我还将脚本更改为可执行。可能是我会尝试将其更改为777,我猜可能是(A)脚本正在接收未准备好的格式的消息
,例如可能是散列或以某种方式编码的时髦,或者(B)由于某种原因,脚本不可执行,可能是权限、python可执行文件等。您是否可以尝试手动运行脚本,正如您在命令=>
指令中使用的一样,使用与您使用echo
命令时打印的相同消息?是的,我可以手动运行脚本,而且我还将脚本更改为可执行。也许我会试着把它改成777