Python

collectd 無法辨識我的 python 外掛

  • July 15, 2015

我正在嘗試載入我在網上找到的一個超級簡單的外掛作為起點,而 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)”
  2. 看來,作為外掛名稱的“測試”與堆棧中的某處(可能是 python 中的“測試”模組?)發生衝突。將文件 test.py 重命名為 ‘foobar.py’,並將配置中的 ’test’ 替換為 ‘foobar’,會導致它正確載入,並且在啟動時輸出 ‘config called’。

引用自:https://serverfault.com/questions/705755