rrdtool fetch returns 全部-nan
rrdtool fetch returns all -nan
创建数据库:
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 }'`
$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
我做错了什么?
你不说你添加了多少数据样本;您至少需要 13 才能在输出中获得 NaN 以外的任何值。
你肯定有这些问题--
- 你的Step size是60s,但是你的DS Heartbeat也是60s。这意味着您需要 比 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
创建数据库:
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 }'`
$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
我做错了什么?
你不说你添加了多少数据样本;您至少需要 13 才能在输出中获得 NaN 以外的任何值。
你肯定有这些问题--
- 你的Step size是60s,但是你的DS Heartbeat也是60s。这意味着您需要 比 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