collectd 无法识别我的 python 插件

collectd 无法识别我的 python 插件

我正在尝试加载我在网上找到的一个非常简单的插件作为起点,但 collectd 似乎无法识别我的 python 插件。我的conf文件有相应的行:

<LoadPlugin python>
    Globals true
</LoadPlugin>

...

<Plugin python>
    ModulePath "/usr/lib/collectd"
    Import "test"

    <module "test">
        test "input"
    </module>

</Plugin>

我的test.py样子是这样的:

import collectd

def configer(confObj):
    collectd.info('config called')

def init_fun():
    collectd.info('my py module init called')

def reader(input_data=None):
    collectd.info('my py read called')

def writer(input_data=None)
    collectd.info('my py write called')


collectd.register_config(configer)
collectd.register_init(init_fun)
collectd.register_read(reader)
collectd.register_write(writer)

我尝试了很多方法,包括重新排序寄存器和一些其他方法,但无论我的syslog结果如何:

Jul 14 21:10:34 vagrant-ubuntu-trusty-64 collectd[21449]: python plugin: Found a configuration for the "test" plugin, but the plugin isn't loaded or didn't register a configuration callback.
Jul 14 21:10:34 vagrant-ubuntu-trusty-64 collectd[21454]: python plugin: Found a configuration for the "test" plugin, but the plugin isn't loaded or didn't register a configuration callback.

我已经头脑混乱了好几个小时,感觉完全迷失了方向,任何帮助我都感激不尽。

答案1

存在两个问题:

  1. 第 12 行缺少尾随的 :: “def writer(input_data=None)”
  2. 看来插件的名称“test”与堆栈中的某个东西(可能是 python 中的“test”模块?)发生冲突。将文件 test.py 重命名为“foobar.py”,并在配置中将“test”替换为“foobar”,可使其正确加载,并在启动时输出“config called”。

相关内容