我试图根据用户通过gui提交的持续时间和间隔填充rrd数据库。我建立了一个定时器,每。。。分钟。在测量之后,我尝试使用fetch方法查看收集到的数据,但是我只得到“none”值。在
def update(self):
t=getTemperature()
h=getHumidity()
if self.status==11:
rrdtool.update(self.path,"N:"+t+":"+h)
elif self.status==10:
rrdtool.update(self.path,"N:"+t)
elif self.status==01:
rrdtool.update(self.path,"N:"+h)
传感器值是正确的,我通过打印出来检查了。 这个rrdtool.create-方法也非常好,创建了一个数据库,但正如我所说的,实际上没有正确更新。在
这里的用法rrdtool.create():
^{pr2}$
您的问题是对步长、DS heartbeat和RRA XFF设置之间的关系的误解。虽然你没有告诉我你的“fre”值是多少,但很明显RRD的定义是不正确的。在
步长是RRD文件中最小的时间间隔。默认情况下,这是300秒(5分钟),但如果需要,可以在创建时将其指定为更小或更大。一般情况下,您可以将此设置为数据采样之间的预期时间量;因此,如果您的样本大约每隔5分钟出现一次,则将其设置为5分钟
心跳是样本之间被视为未知之前的最大时间量。这是样品不规则性的指标。一般来说,这将是预期采样间隔的两倍;因此,如果您的样本每5分钟来一次,请将其设置为600秒(10分钟)。如果间隙大于此值,则样本范围标记为“未知”。在
XFF是构成RRA合并数据点的DS数据点的比例,在合并数据点变得未知之前,这些数据点可以是未知的。通常,此值设置为0.5,但如果需要,可以更高(例如0.9)。您的RRA使用的合并系数为1,因此在本例中,XFF无关紧要,但在开始总结时,它更重要。在
由于heartbeat被设置为
fre
,这是到达数据样本的大致频率,因此不太可能在足够小的时间间隔内有足够的样本来存储除“unknown”之外的任何内容。记住,当数据到达时,RRD将对数据进行标准化和整合,并在内部转换为速率。这意味着传入的数据需要相当规则。如果采样间隔有很高的标准偏差,那么您将需要一个高心跳,您将得到许多调整。在在您的例子中,我建议您将RRD步长设置为60或300(以小于
fre
为准),并将心跳设置为2*fre
。在相关问题 更多 >
编程相关推荐