我希望能够看到记录RRD中的最后一个值的时间。
我有以下命令来打印最后记录的值,它工作正常。
DEF:temp1=temperatures2.rrd:iliakos:AVERAGE
GPRINT:temp1:LAST:"Current:%8.1lf %s"
我在文档中找到了:strftime,我尝试了:
GPRINT:temp1:LAST:"%H:%M":strftime
但有:
graph.sh: line 21: GPRINT:temp1:LAST:%H:%M:strftime: command not found
我更仔细地阅读了文档,它提到strftime应用于VDEF所以我尝试了以下操作:
VDEF:vtemp1=temp1,AVERAGE
GPRINT:vtemp1:LAST:"%H:%M":strftime
但再次得到:
ERROR: I don't understand ':%H:%M:strftime' in command: 'GPRINT:vtemp1:LAST:%H:%M:strftime'
我认为rrd中的值有一个相关的记录时间戳,正如我们从转储中看到的那样。我们如何访问这个访问这个时间戳,并在图形命令中使用它?
谢谢
当rrdtool graph需要来自rrd文件的数据时,它简单地声明一个时间范围,并作为响应获取交付的数据。无论rrd文件是否实际保存了该时间范围的数据或注释。如果没有可用的数据,则传递给图形组件的数据由nan组成。
所以你最多能回答的问题是,最后一次"已知"数据被写入rrd文件是什么时候。
您尝试使用strftime
函数是好的,但您需要跳过另一个圈。您需要为所有可用数据的时间点准备一些随时间增长的数据。这就是CDEF
所完成的。然后,您可以使用VDEF
来确定最大的count
值并检索与该值相关联的时间戳。
rrdtool graph x.png
DEF:data=x.rrd:x:AVERAGE
CDEF:count=data,UN,UNKN,COUNT,IF
VDEF:last=count,MAXIMUM
GPRINT:last:%H:%M:%S:strftime