流畅的自定义插件注册抛出 "Unknown output plugin"

fluent custom plugin registration throws "Unknown output plugin"

我正在尝试修改现有的 Fluentd 插件并将其用于我的自定义。所以我:

  1. git 从 github 克隆了插件仓库。 git clone <url>
  2. 编辑了我的更改
  3. gem build plugin.gemspec
  4. gem install plugin.gem
  5. 创建了一个提到插件类型的配置
  6. 运行 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>