hi
由于需要在logstash中加入一些逻辑,故打算在filter中调用公司的中间件。
我的环境是centos6.5,logstash是使用的最新版本6.3.2。ruby是使用的1.8.7(2.5.0也尝试过),在ruby两个版本下都能直接调通公司中间件。
经过测试,直接在ruby代码中是能直接调用中间件的。但是将代码移植到logstash filter中就不行了。
无论是将代码直接放到配置文件中的filter - ruby -code{}中,还是讲代码封装到一个文件,在filter中直接引用文件均不行
Logstash.filters.ruby:Ruby exception occurred:no such file to load --XXX
(XXX 为 调用中间件需要引入的require)
后续我又自己自定义了一个filter插件,在自定义filter的gemspec文件中引入这个require,也是失败。
Logstash stopped processing because of an error :(VersionConflict) Bundler could not find compatible versions for gem 'XXX'
在系统中,直接通过irb=>require 'XXX',是能成功为true的。
后来在网上查找的时候,发现一篇文章(见末尾相关链接)。他也引入了第三方模块来操作mysql。但是经过我查找logstash文件,发现这些模块其实是已经封装到他们安装启动文件中的,而我需要引用的模块肯定是不在logstash安装文件中的。难道是不在logstash中的模块就不支持调用吗?
想请问大家:
logstash中能调其他的第三方require模块吗?如果能需要怎么做才能把它引入进来呢?
由于需要在logstash中加入一些逻辑,故打算在filter中调用公司的中间件。
我的环境是centos6.5,logstash是使用的最新版本6.3.2。ruby是使用的1.8.7(2.5.0也尝试过),在ruby两个版本下都能直接调通公司中间件。
经过测试,直接在ruby代码中是能直接调用中间件的。但是将代码移植到logstash filter中就不行了。
无论是将代码直接放到配置文件中的filter - ruby -code{}中,还是讲代码封装到一个文件,在filter中直接引用文件均不行
Logstash.filters.ruby:Ruby exception occurred:no such file to load --XXX
(XXX 为 调用中间件需要引入的require)
后续我又自己自定义了一个filter插件,在自定义filter的gemspec文件中引入这个require,也是失败。
Logstash stopped processing because of an error :(VersionConflict) Bundler could not find compatible versions for gem 'XXX'
在系统中,直接通过irb=>require 'XXX',是能成功为true的。
后来在网上查找的时候,发现一篇文章(见末尾相关链接)。他也引入了第三方模块来操作mysql。但是经过我查找logstash文件,发现这些模块其实是已经封装到他们安装启动文件中的,而我需要引用的模块肯定是不在logstash安装文件中的。难道是不在logstash中的模块就不支持调用吗?
想请问大家:
logstash中能调其他的第三方require模块吗?如果能需要怎么做才能把它引入进来呢?
1 个回复
lvwh
赞同来自: