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 ответ
Решение
Есть две проблемы:
- Отсутствует завершающий символ: в строке 12: "def writer(input_data=None)"
- Похоже, что 'test', поскольку имя вашего плагина конфликтует с чем-то где-то в стеке (возможно, с модулем 'test' в python?). Переименование файла test.py в "foobar.py" и замена "test" на "foobar" в конфигурации приводит к его корректной загрузке и выводит "config named" во время запуска.