我在使用 exec 插件的自定义脚本方面遇到了问题。从 shell 来看,该脚本运行良好,但在 /var/log/collectd.log 中没有任何用处。
LoadPlugin logfile
<Plugin logfile>
LogLevel info
File "/var/log/collectd.log"
Timestamp true
PrintSeverity true
</Plugin>
我该如何调试/排除故障?文档我找到了一个例子
-> | PUTVAL "testhost/interface/if_octets-test0" interval=10 1179574444:123:456
<- | 0 Success
但是我该如何运行它,如何将我的 PUTVAL 传递给 collectd?collectd 不监听任何端口(所有其他插件都运行良好并将数据发送到 graphite)。
需要明确的是:问题不在于查看生成的字符串,而在于确保特定的字符串会被接受。
谢谢。
ps 具体问题:脚本返回几十个值,但其中一个只到达石墨。
答案1
您的自定义脚本应通过将命令写入 stdout 来使用您提到的文本协议。您可以在文档中找到一个非常简单的示例:https://collectd.org/wiki/index.php/Plugin:Exec
echo "PUTVAL \"$HOSTNAME/exec-magic/gauge-magic_level\" interval=$INTERVAL N:$VALUE"
基本上,您的脚本应该只将 PUTVAL 命令写入标准输出(而不包含其他任何内容)来提交值。
答案2
停止服务并手动运行check_capability -f
显示未打印到日志文件的错误。