虽然正在更新,但RRD数据库为空

2024-09-30 22:14:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图根据用户通过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}$

Tags: path方法用户self数据库间隔statuscreate
1条回答
网友
1楼 · 发布于 2024-09-30 22:14:59

您的问题是对步长、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。在

相关问题 更多 >