如何在CollecD的自定义python插件中访问读取的插件?

时间:2018-03-16 21:57:54

标签: python analytics collectd

我有以下要求:

  • 在CollecD中注册插件列表(即CPU,内存,温度等);
  • 每次收集新指标时,我都想获取其值并执行命令。例如,每次收集有关CPU使用率的新指标时,我都希望 - 假设 - 将其写入文件;

到目前为止,我的方法是编写自定义Python插件,但我不知道如何访问其他插件的读取。例如:

配置文件

LoadPlugin cpu
<Plugin cpu>
  ReportByState = true
  ReportByCpu = true
  ValuesPercentage = true
</Plugin>

LoadPlugin python
<Plugin python>
    LogTraces true
    ModulePath "/opt/collectd/plugins"
    Import "my_custom_python_plugin"
</Plugin>

my_custom_python_plugin

import collectd


def read_func():
  # Here I wanna execute my fancy code 
  # with the metrics collected by other plugins (i.e. CPU)


collectd.register_read(read_func)

我怎样才能实现它?

1 个答案:

答案 0 :(得分:0)

事实证明,每当插件发布指标时,都会调用来自collectd的write回调。它包含一个values对象,可以根据需要解析任何指标。即:

<强> collectd.conf

Hostname "graph_host"

Interval 5.0

LoadPlugin "logfile"
<Plugin "logfile">
  LogLevel "info"
  File "some/dir/log"
  Timestamp true
</Plugin>

LoadPlugin memory
<Plugin memory>
</Plugin>

LoadPlugin python
<Plugin python>
    LogTraces true
    ModulePath "/opt/collectd/plugins"
    Import "my_plugin"
</Plugin>

<强> my_plugin.py

if values.plugin == "memory" and values.type == "memory" and values.type_instance == "free":
  # do whatever I want


collectd.register_write(write)

我之前没有注意到,因为我使用cpu插件测试它本身就有错误 - 在Mac上发生了权限问题 - 因此,没有生成任何指标而write回调从未被召唤过。