collectd 问题诊断方法

输出日志

collectd.conf

LoadPlugin "logfile"
<Plugin "logfile">
  LogLevel "info"
  File "/var/log/collectd.log"
  Timestamp true
</Plugin>

collectd-exec 插件执行的脚本标准错误输出(stderr)会出现在日志文件中(/var/log/collectd.log)。

通过分析日志可以查出统计脚本本身的问题。

网络抓包

使用 tcpdump 抓包

tcpdump -i any host <collectd server ip> -XX -tttt -nnnn -s 0 -w ~/<collectd server ip>.pcap

请将 <collectd server ip> 替换为 collectd.conf 中 network 插件中的 Server 值。

使用 wireshark 查看抓到的包,右键菜单中选择 Decode As... ,弹出的列表中选择按 collectd 协议进行解析。

检查上报的数据是否有问题。

如果上报的数据是正常的,则有可能是以前上报了有问题的数据导致,请尝试从 collectd 服务器上直接将相应的 rrd 文件删除。

分析 rrd 文件

collectd 是使用 RRDtool 进行数据存储,直接查看 rrd 文件数据是最直接的诊断方法。

rrdtool fetch /var/lib/collectd/localhost/test/gauge.rrd AVERAGE --start 1464585532 --end N

RRDtool 的用法请参考 RRDtool - rrdtutorial