rrdtool fetch 返回所有 -nan



Create 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

我试图从自己和根开始运行(结果相似)

因此,我尝试获取我的值:

rrdtool fetch test.rrd AVERAGE -s 1509908400

屏幕

(所有抓取类型都显示 -NANS)

转储类似:屏幕

日志.txt(只需确保):屏幕

我做错了什么?

你没有说你添加了多少数据样本;你至少需要 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

相关内容

  • 没有找到相关文章

最新更新