elasticsearch Logstash:从inout或putput部分触发python脚本,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch Logstash:从inout或putput部分触发python脚本,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch Logstash:从inout或putput部分触发python脚本

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

我使用logstash和elasticsearch,从不同服务器的filebeats中获取数据。 我有一个要求,当一个字段等于某个值时,我想执行一个python脚本。例如,如果([response]=~/^5\d\d/){}。i、 例如,当日志中出现500个错误时,我希望执行一个python脚本以进行进一步的操作

我搜索过谷歌、elasticforums,也尝试过以下内容,但到目前为止运气不佳

我使用output exec插件来执行代码

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