Фильтр Java для Logstash

Вы знаете, что для Logstash есть фильтр Ruby, который позволяет мне писать код на Ruby, и обычно он включается в файл конфигурации следующим образом.

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

Теперь у меня есть два файла Jar, которые я хотел бы включить в свой фильтр, чтобы входные данные, которые у меня есть, могли обрабатываться в соответствии с операциями, которые у меня есть в этих файлах Jar. Однако я не могу (очевидно) включить файл Jar в рубиновый код. Я искал решение.


person hello_its_me    schedule 03.09.2015    source источник


Ответы (2)


Итак, чтобы ответить на этот вопрос, я нашел этот замечательный учебник от Elastc.co:

Показывает шаги по созданию нового гема и его дальнейшему использованию в качестве фильтра для Logstash.

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

person hello_its_me    schedule 08.09.2015

Orrr, чтобы ответить на ваш первоначальный вопрос,

вы можете включить JAR в свой код ruby, но вам нужно использовать jruby,

см. здесь инструкции о том, как получить доступ к коду Java из JAR в JRuby:

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

Чтобы использовать ресурсы в файле jar из JRuby, файл jar должен либо находиться в пути к классам, либо быть доступным с помощью метода require:

require 'path/to/mycode.jar' Это требование делает ресурсы в mycode.jar доступными для обнаружения более поздними командами, такими как import и include_package.

Обратите внимание, что загрузка jar-файлов через require ищет их по $LOAD_PATH, как и для обычных ruby-файлов.

person bbozo    schedule 08.09.2015
comment
Да, это правильно, и именно так я начал со своим решением, гем будет написан с использованием Jruby (включая файл jar), который будет использоваться в качестве нового фильтра logstash. Благодарность :) - person hello_its_me; 08.09.2015