google-cloud-platform - 向 google-fluidd 添加自定义插件

标签 google-cloud-platform fluentd

我需要捕获给定进程的文件描述符。这与 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/

相关文章:

google-cloud-platform - apigeex 是否提供不同云提供商的托管服务

amazon-web-services - 如何远程连接到 GCP ML Engine/AWS Sagemaker 托管笔记本?

google-compute-engine - Google Cloud Logging + Google流利的丢弃消息

java - 为什么 elastic-search 容器的内存使用量一直在增加而很少使用?

kubernetes - 从存储帐户恢复日志到部署在 KUBERNETES 上的 Elasticsearch 的架构是什么?

networking - 谷歌云 - 阻止传入连接

java - 使用触发器限制窗口的最大长度

google-cloud-platform - 将数据流从 Google Cloud Storage 流式传输到 Bigquery

open-source - Graylog 与 Fluentd

regex - Fluentd 多个名为 Captures 的正则表达式