rrdtool fetch返回all -nan

时间:2017-11-05 19:31:14

标签: ubuntu cron rrdtool

创建db:

rrdtool create test.rrd --step 60 --start N DS:mem:GAUGE:60:U:U RRA:LAST:0.5:12:24 RRA:MAX:0.5:12:24 RRA:MIN:0.5:12:24 RRA:AVERAGE:0.5:12:24

然后我创建了get_mem.sh:

#!/bin/bash

export PATH=/usr/local/rrdtool/bin/rrdtool:/usr/local/rrdtool/bin/rrdtool:/home/parallels/bin:/home/parallels/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$PATH


RRDTOOL='/usr/local/rrdtool/bin/rrdtool'
FILE='test.rrd'
COMMAND=`cat /proc/meminfo | grep MemFree | grep -oE '[0-9]+' | awk '{print $1}'`
$RRDTOOL updatev $FILE N:$COMMAND
echo $COMMAND >> log.txt

和cron任务:

0-55/1 * * * * ./get_mem.sh

我试图从我自己和root中运行(结果类似)

所以,我尝试获取我的值:

rrdtool fetch test.rrd AVERAGE -s 1509908400

screen

(所有获取类型显示-nans)

转储类似:screen

log.txt(只需确保):screen

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您不会说您添加了多少数据样本;你的输出中至少需要13个才能获得NaN以外的任何东西。

你肯定有这些问题 -

  • 您的步数为60秒,但您的DS心跳也是60秒。这意味着您需要使样本更多而不是59秒才能使它们有效。通常,您的心跳应该是步长的两倍。
  • 你的cronjob每分钟从0到55收集数据。56-59分钟怎么样?此外,如果这是每分钟收集,那么这正好在你的心跳边界,所以它可能存储NaN。
  • 您最小的RRA有1cdp = 12pdp。这可能是你想要的;但请记住,您需要12个连续的有效数据点才能在RRA中获得一个条目。也许添加一个1cdp = 1pdp的RRA?

我建议您像这样创建RRD:

rrdtool create test.rrd --step 60 --start N \
    DS:mem:GAUGE:120:0:U \
    RRA:AVERAGE:0.5:1:24 \
    RRA:LAST:0.5:12:24 RRA:MAX:0.5:12:24 \
    RRA:MIN:0.5:12:24 RRA:AVERAGE:0.5:12:24