collectd在Ubuntu 12.04中存储NaN而不是正确的值

我使用sudo apt-get install collectd在我的Ubuntu 12.04上安装了collectd,但是它只是在rrd文件中收集NaN值。 例如文件名为memory-used.rrd,这是它保存的值。

0003 10 1366005779

<ds> <name> value </name> <type> GAUGE </type> <minimal_heartbeat>20</minimal_heartbeat> <min>0.0000000000e+00</min> <max>2.8147497671e+14</max> <!-- PDP Status --> <last_ds>1807986688.000000</last_ds> <value>1.6271880192e+10</value> <unknown_sec> 0 </unknown_sec> </ds> <!-- Round Robin Archives --> <rra> <cf>AVERAGE</cf> <pdp_per_row>1</pdp_per_row> <!-- 10 seconds --> <params> <xff>1.0000000000e-01</xff> </params> <cdp_prep> <ds> <primary_value>1.8075664384e+09</primary_value> <secondary_value>0.0000000000e+00</secondary_value> <value>NaN</value> <unknown_datapoints>0</unknown_datapoints> </ds> </cdp_prep> <database> <!-- 2013-04-15 07:13:00 IRDT / 1365993780 --> <row><v>NaN</v></row> <!-- 2013-04-15 07:13:10 IRDT / 1365993790 --> <row><v>NaN</v></row> <!-- 2013-04-15 07:13:20 IRDT / 1365993800 --> <row><v>NaN</v></row> <!-- 2013-04-15 07:13:30 IRDT / 1365993810 --> <row><v>NaN</v></row> <!-- 2013-04-15 07:13:40 IRDT / 1365993820 --> <row><v>NaN</v></row> <!-- 2013-04-15 07:13:50 IRDT / 1365993830 --> <row><v>NaN</v></row> ......... </database> </rra> 

解决collectd问题的一种非常有效的方法:

  • 启用尽可能less的读取插件(例如在你的情况下的内存 )

     LoadPlugin memory 
  • 启用csv写入插件

     LoadPlugin csv <Plugin csv> DataDir "/tmp/collectd-csv" </Plugin> 
  • 启用日志文件插件

     <Plugin logfile> File STDOUT ## Only available if compiled using --enable-debug # LogLevel debug ## LogLevel info </Plugin> 
  • 在前台运行collectd

     collectd -C /path/to/collectd.conf -f 
  • 看看你的csv目录,如果有什么得到报告

如果一切正常,下一步将排除rrdtool插件的故障。