Collectd - Perl/Python 插件 - 注册功能不工作

Collectd - Perl/Python plugin - registration functions not working

想问一下Collectd的插件Perl和Python及其注册功能。

我尝试用 Perl(以及 Python)编写插件代码,设置读写函数,然后将它们注册到 Collectd(plugin_register 函数)。在所有情况下它都不起作用。每次,日志显示:

Found a configuration for the "my_plugin" plugin, but the plugin isn't loaded or didn't register a configuration callback. severity=warning

我在 perl.conf 中加载我的插件。

下面我附上了直接来自 Collectd.perl 文档的插件示例。该插件以及我的插件具有相同的结果。

package Collectd::Plugins::FooBar;
  use strict;
  use warnings;
  use Collectd qw( :all );

  sub foobar_read
    {
    my $vl = { plugin => 'foobar', type => 'gauge' };
    $vl->{'values'} = [ rand(42) ];
    plugin_dispatch_values ($vl);
    return 1;
    }
  sub foobar_write
    {
    my ($type, $ds, $vl) = @_;
    for (my $i = 0; $i < scalar (@$ds); ++$i) {
      print "$vl->{'plugin'} ($vl->{'type'}): $vl->{'values'}->[$i]\n";
    }
    return 1;
    }

  sub foobar_match
    {
    my ($ds, $vl, $meta, $user_data) = @_;
    if (matches($ds, $vl)) {
      return FC_MATCH_MATCHES;
    } else {
      return FC_MATCH_NO_MATCH;
    }
    }

  plugin_register (TYPE_READ, "foobar", "foobar_read");
  plugin_register (TYPE_WRITE, "foobar", "foobar_write");
  fc_register (FC_MATCH, "foobar", "foobar_match");

Post你的配置如果可以的话。

文档说 LoadPlugin 配置在 collectd.conf 文件中(不是那个看起来从您的日志文件中了解您的情况)。

将您的 foobar.pm 模块放在 /path/to/perl/plugins/Collectd/Plugins/FoorBar.pm 与您指定的路径相匹配... (匹配插件名称和插件pm文件的大小写)。

LoadPlugin perl
# ...
<Plugin perl>
  IncludeDir "/path/to/perl/plugins"
  BaseName "Collectd::Plugins"
  EnableDebugger ""
  LoadPlugin "FooBar"

  <Plugin FooBar>
    Foo "Bar"
  </Plugin>
</Plugin>