流畅的自定义插件注册抛出 "Unknown output plugin"
fluent custom plugin registration throws "Unknown output plugin"
我正在尝试修改现有的 Fluentd 插件并将其用于我的自定义。所以我:
- git 从 github 克隆了插件仓库。
git clone <url>
- 编辑了我的更改
gem build plugin.gemspec
gem install plugin.gem
- 创建了一个提到插件类型的配置
- 运行
fluentd -c <fluend_conf.conf> -vv
最后我在 fluentd 日志中得到了这个(fluent-plugin-swift 是我编辑的插件,插件的类型是 'swift'):
2017-03-22 15:00:27 +0000 [info]: fluent/engine.rb:126:block in configure:
gem 'fluent-plugin-swift' version '0.0.1'
2017-03-22 15:00:27 +0000 [error]: fluent/supervisor.rb:369:rescue in
main_process: config error file="fluend_conf.conf" error="Unknown output plugin
'swift'. Run 'gem search -rd fluent-plugin' to find plugins"
EDIT-1:澄清
我还检查了要注册的插件的命名约定。
该插件存在于 <base_dir>/lib/fluent/plugin/
中。
文件名也是 out_swift.rb
。最后
在文件中,插件注册为:
Fluent::Plugin.register_output('swift', self)
还有什么办法,我可以查看已注册的插件列表,以及它用来注册到 fluend 的名称?
注意:
以前对我有用,我不得不重新做这个,因为有人格式化了我有我的更改的机器。
请问我的方法有什么问题?
可能是安装路径的问题,请检查以下内容:
输入gem environment
您将看到 安装目录,如:
RubyGems Environment:
- RUBYGEMS VERSION: 2.6.8
- RUBY VERSION: 2.4.0 (2016-12-24 patchlevel 0) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.4.0
- USER INSTALLATION DIRECTORY: /root/.gem/ruby/2.4.0
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- SPEC CACHE DIRECTORY: /root/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /usr/local/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
进入安装目录目录,现在
cd gem/<ur_custom_plugin>
现在检查你的文件是否存在。
如果没有,你得到了答案。
解决方案:
只需将您的文件复制到此目录并启动 fluentd
如上所述,这可能与你安装插件时使用的gem有关,对于我在CentOS7中的情况,如下的td-agent-gem有效:
td-agent-gem install <pluginname>
我正在尝试修改现有的 Fluentd 插件并将其用于我的自定义。所以我:
- git 从 github 克隆了插件仓库。
git clone <url>
- 编辑了我的更改
gem build plugin.gemspec
gem install plugin.gem
- 创建了一个提到插件类型的配置
- 运行
fluentd -c <fluend_conf.conf> -vv
最后我在 fluentd 日志中得到了这个(fluent-plugin-swift 是我编辑的插件,插件的类型是 'swift'):
2017-03-22 15:00:27 +0000 [info]: fluent/engine.rb:126:block in configure:
gem 'fluent-plugin-swift' version '0.0.1'
2017-03-22 15:00:27 +0000 [error]: fluent/supervisor.rb:369:rescue in
main_process: config error file="fluend_conf.conf" error="Unknown output plugin
'swift'. Run 'gem search -rd fluent-plugin' to find plugins"
EDIT-1:澄清
我还检查了要注册的插件的命名约定。
该插件存在于 <base_dir>/lib/fluent/plugin/
中。
文件名也是 out_swift.rb
。最后
在文件中,插件注册为:
Fluent::Plugin.register_output('swift', self)
还有什么办法,我可以查看已注册的插件列表,以及它用来注册到 fluend 的名称?
注意: 以前对我有用,我不得不重新做这个,因为有人格式化了我有我的更改的机器。
请问我的方法有什么问题?
可能是安装路径的问题,请检查以下内容:
输入gem environment
您将看到 安装目录,如:
RubyGems Environment:
- RUBYGEMS VERSION: 2.6.8
- RUBY VERSION: 2.4.0 (2016-12-24 patchlevel 0) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.4.0
- USER INSTALLATION DIRECTORY: /root/.gem/ruby/2.4.0
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- SPEC CACHE DIRECTORY: /root/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /usr/local/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
进入安装目录目录,现在
cd gem/<ur_custom_plugin>
现在检查你的文件是否存在。 如果没有,你得到了答案。
解决方案: 只需将您的文件复制到此目录并启动 fluentd
如上所述,这可能与你安装插件时使用的gem有关,对于我在CentOS7中的情况,如下的td-agent-gem有效:
td-agent-gem install <pluginname>