Java Logstash 过滤器

Java Filter For Logstash

你知道 Logstash 有一个 Ruby 过滤器,它使我能够在 Ruby 中编写代码,它通常包含在配置文件中,如下所示

filter {
      ruby {
           code => "...."
      }
}

现在我有两个 Jar 文件,我想将它们包含在我的过滤器中,以便可以根据我在这些 Jar 文件中的操作来处理我的输入。但是,我不能(显然)在 ruby 代码中包含 Jar 文件。我一直在寻找解决方案。

所以为了回答这个问题,我从 Elastc.co 找到了这个精彩的教程:

显示创建新 gem 并稍后将其用作 Logstash 过滤器的步骤。

https://www.elastic.co/guide/en/logstash/current/_how_to_write_a_logstash_filter_plugin.html

或者回答你原来的问题,

可以 在你的 ruby 代码中包含一个 JAR,但你需要使用 jruby,

请参阅此处有关如何从 JRuby 中的 JAR 访问 java 代码的说明:

https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby#from-jar-files

To use resources within a jar file from JRuby, the jar file must either be on the classpath or be made available with the require method:

require 'path/to/mycode.jar' This require makes the resources in mycode.jar discoverable by later commands like import and include_package.

Note that loading jar-files via require searches along the $LOAD_PATH for them, like it would for normal ruby files.