[英]RRD database empty although updating
我正在嘗試根據用戶通過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()的用法:
def __init__(self,term,temEnabled,humEnabled,mins,hrs,fre):
self.path="/home/pi/Wetterstation/Speicherort/"+term+".rrd"
if os.path.exists(self.path)==False:
totalEntries=int((mins+hrs*60)/fre)
totalEntries=str(totalEntries)
if temEnabled==True and humEnabled==True:
rrdtool.create(self.path,
"DS:temperature:GAUGE:900:0:50",
"DS:humidity:GAUGE:"+str(fre)+":0:100",
"RRA:AVERAGE:0.5:1:"+totalEntries, "RRA:MIN:0.5:12:2400",
"RRA:MAX:0.5:"+totalEntries+":1",
"RRA:MIN:0.5:"+totalEntries+":1")
self.status=11
elif temEnabled==True:
rrdtool.create(self.path,
"DS:temperature:GAUGE:"+str(fre)+":0:50",
"RRA:AVERAGE:0.5:1:"+totalEntries,
"RRA:MIN:0.5:"+totalEntries+":1",
"RRA:MAX:0.5:"+totalEntries+":1")
self.status=10
elif humEnabled==True:
rrdtool.create(self.path,
"DS:hum:GAUGE:"+str(fre)+":0:100",
"RRA:AVERAGE:0.5:1:"+totalEntries,
"RRA:MIN:0.5:"+totalEntries+":1",
"RRA:MAX:0.5:"+totalEntries+":1")
self.status=01
self.success=True
else:
self.success=False
您的問題是對步長,DS心跳和RRA XFF設置之間關系的誤解。 盡管您沒有告訴我您的“ fre”值實際上是什么,但很明顯RRD定義不正確。
步長是RRD文件中的最小時間間隔。 默認情況下,此時間為300秒(5分鍾),不過您可以在創建時根據需要將其指定為更大或更小。 通常,您可以將其設置為數據樣本之間的預期時間; 因此,如果您的樣本大約每5分鍾一次,則將其設置為5分鍾。
心跳是樣本之間被認為未知之前的最長時間。 這表明樣品不規則。 通常,這將是預期采樣間隔的兩倍 ; 因此,如果您的樣品每5分鍾送出一次,請將其設置為600s(10分鍾)。 如果間隙大於此范圍,則將樣品范圍標記為“未知”。
XFF是構成RRA合並數據點的DS數據點的比例,在合並數據點變得未知之前,該數據點可能是未知的。 通常,該值設置為0.5,但如果需要可以更高(例如0.9)。 您的RRA的合並因子為1,因此在這種情況下,XFF無關緊要,但是當您進行總結時,它顯得尤為重要。
由於將您的心跳設置為fre
,這是到達數據樣本的大約頻率,因此不太可能以足夠小的間隔存儲足夠的樣本,以至於可以存儲除“未知”以外的任何內容。 請記住,當數據到達時,RRD會規范化和合並數據,並在內部將其轉換為速率。 這意味着傳入的數據需要相當規則。 如果采樣間隔具有較高的標准偏差,則您將需要較高的心跳,並且會進行很多調整。
在您的情況下,我建議您將RRD步長設置為60或300(兩者均小於fre
),並將心跳設置為2*fre
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.