簡體   English   中英

RRD工具結構和理解

[英]RRD Tool Structure and understanding

我目前正在監視5座不同的建築物,每座建築物大約有300個房間。 每個房間都有4個傳感器,其中三個用於監視房間不同點的溫度,另一個用於檢測房間消耗的功率(千瓦)。

我目前每15分鍾輪詢一次每個傳感器,每天產生576,000個條目,我監視的建築物數量很快就會增加。

我目前將所有信息存儲在MySQL中,每種傳感器類型都有一個MySQL表,因此這些表分別命名為“ power”,“ temp1”,“ temp2”,“ temp3”。 這些表中的列是“ id”,“ building_id”,“ epoch”,“ value”。

然后,我使用這些數據通過Chart.js庫生成圖表,並統計諸如在特定時間段內每座建築物的用電量等統計信息,我使用PHP來完成所有這些工作。

我不認為我的MySQL數據庫能夠在不進行嚴重擴展和群集的情況下解決該問題

我需要能夠查看5年的歷史數據,盡管在一段時間后可能會丟失一些粒度。

我被告知,RRD也許能夠解決我的問題,並對此進行了一些研究,但仍然存在一些問題。

它是否仍允許我使用Chart.js庫專門創建自己的圖形? 如果我可以從RRD獲取時間/值JSON數據,那應該沒問題。

我還需要創建多少個不同的RRD文件? 每個建築物需要一個嗎? 每間房? 每個傳感器? 它仍然易於管理。

我有一些PHP腳本,它們每隔15分鍾運行一次,這些腳本使用SNMP從傳感器中提取數據,然后將數據插入MySQL(如果我可以使用相同的腳本也可以插入RRD中),從我所看到的來看,這也很棒您可以使用PHP插入RRD,這樣就可以了。

編輯:我目前正在閱讀http://michael.bouvy.net/blog/zh-CN/2013/04/28/graph-data-rrdtool-sensors-arduino/ ,它已開始回答我的一些問題。

您是否擁有一個具有6000個度量標准的RRD文件或具有1200個度量標准的5個文件等,取決於您如何管理數據。

首先,您不應將樣本在不同時間點到達的指標分組在一起。 因此,如果您一次采樣一個房間,則每個房間可能應該有一個RRD文件(其中包含4個指標)。 這將取決於管理傳感器的方式。 如果您在每個房間或每個建築物中都有一個設備。 無論您有一個文件還是一千個文件,都可以檢索數據並對其進行圖形處理(盡管在最新版本的RRDTool中,“千”方案的工作效果更好)。

其次,您是否可能添加新的數據點(IE,建築物或房間)? 您不能(輕松)將新指標添加到現有RRD文件中。 因此,如果您希望將來增加一棟新建築物,或者要增加或刪除一個房間,那么也許每個建築物一個RRD或每個房間一個RRD會更好。

如果沒有更多信息,我想您最好每間房間一個RRD(包含4個指標)並分別更新它們。 根據建築物和房間ID命名文件,根據Epoch,它們可以保存功率和3個溫度值。

對於作圖,RRDTool當然能夠通過直接訪問數據來創建自己的圖。 但是,如果您要提取數據並將其自己放入圖形中,則可以這樣做; Xport函數將允許您提取必要的數據點(可能是來自多個RRD文件並具有聚合),然后可以將這些數據點傳遞到您選擇的圖形庫。 如果您需要原始數據,則還有Fetch函數。

如果您的數據采樣間隔為15分鍾,請確保正確設置RRD間隔,心跳和RRA。 特別是,RRA將指定執行什么聚合以及將數據以更高的粒度保留多長時間。 RRA通常應與您希望以圖形方式繪制數據的分辨率相對應(這就是為什么人們通常使用5min / 30min / 2h / 1d的原因,因為它們與400px寬度的每日,每周,每月和每年的圖表都很好地對應)

您可能想看一下時間序列數據庫,並測試一些具有內置可視化功能的系統,這是一個允許您執行聚合和PHP包裝程序的API。 時間序列數據庫經過優化,可有效存儲帶時間戳的數據,並具有用於時間序列轉換的內置功能。

https://zh.wikipedia.org/wiki/Time_series_database

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM