我需要捕获给定进程的文件描述符。这与 Collectd 的进程插件的作用类似,但需要在 Fluentd、Google-Fluentd(特别是 Rails)上获取它。
我已将我的插件添加到/etc/google-fluenced/plugin 目录下,但不幸的是,它没有注册。我什至已经移动到 /opt/google-fluenced/embedded/lib/ruby/gems/2.6.0/gems/fluenced-1.7.4/lib/Fluent/plugin
仍然没有运气。出于绝望,我也尝试将 in_tail.rb 重命名为 in_tail2.rb,但 tail 插件消失了。
2020-08-14 18:28:16 -0700 [error]: fluent/log.rb:362:error: config error file="/etc/google-fluentd/google-fluentd.conf" error_class=Fluent::ConfigError error="Unknown input plugin 'tail'. Run 'gem search -rd fluent-plugin' to find plugins"
这告诉我还有其他地方必须提到插件。认为我可以在/etc/google-fluidd/plugin 下编写一个文件插件是不是太天真了?
最佳答案
经过几个小时在 fluidd 中的调用堆栈上上下移动,试图找出 fluidd 加载的原因和插件背后的逻辑,我终于明白了。
@type 必须与注册调用和文件名匹配!
即我用过
@type fc_count
我的文件名是 /etc/google-fluidd/in_fd.rb 与
Fluent::Plugin.register_input('fd_count', self)
尽管类型和注册匹配,但 Fluent 在加载配置时无法将文件路径匹配到plugin/in_fd.rb。基本上,如果您不使用插件,它就不会加载它,并且它确定它的方式是通过配置。这就是为什么当我重命名现有输入插件时,它不再被发现的原因。
关于google-cloud-platform - 向 google-fluidd 添加自定义插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63421785/