我有以下要求:
到目前为止,我的方法是编写自定义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)
我怎样才能实现它?
答案 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
回调从未被召唤过。