RRD工具结构和理解

时间:2015-04-05 14:35:36

标签: php rrdtool rrd

我目前正在监控5栋不同的建筑物,每栋建筑物大约有300个房间。每个房间有4个传感器,其中三个监测房间不同点的温度,另外一个监测房间消耗的电量(杀虫力)。

我目前每15分钟轮询一次传感器,每天产生576,000个参赛作品,我监控的建筑物数量很快就会增加。

我目前正在将所有信息存储在MySQL中,我为每种传感器类型都有一个MySQL表,因此这些表被命名为“power',' temp1',' temp2& #39;,' 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/en/2013/04/28/graph-data-rrdtool-sensors-arduino/,它已开始回答我的一些问题。

2 个答案:

答案 0 :(得分:0)

您是否有一个包含6000个指标的RRD文件,或者包含1200个指标的5个文件等取决于您管理数据的方式。

首先,您不应将样本在不同时间点到达的指标组合在一起。因此,如果您一次对一个房间进行采样,则每个房间可能应该有一个RRD文件(其中包含4个指标)。这取决于管理传感器的内容;如果每个房间或每栋建筑有一台设备。无论您有一个文件还是一千个文件(尽管在最新版本的RRDTool中,“千#”场景的工作情况要好得多),检索数据并绘制图表是有效的。

其次,您是否可能添加新的数据点(IE,建筑物或房间)?您不能(轻松地)将新指标添加到现有RRD文件中。因此,如果您希望将来添加新建筑物,或者添加或移除房间,那么每栋建筑物或每个房间一个RRD可能会更好。

如果没有更多信息,我猜你每个房间有一个RRD(包含4个指标)会更好,并单独更新。根据建筑物和房间ID命名文件,根据Epoch,它们可以保存电源和3个温度值。

对于图形化,RRDTool当然能够通过直接访问数据来创建自己的图形。但是,如果您想要提取数据并将它们自己放入图表中,这是可能的; Xport函数将允许您提取必要的数据点(可能来自多个RRD文件和聚合),然后您可以将其传递到您选择的图形库。如果你想要原始数据,还有Fetch功能。

如果您的数据样本间隔15分钟,请确保正确设置RRD间隔,心跳和RRA。特别是,RRA将指定执行的聚合以及以更高粒度保存数据的时间。一般来说,RRA应该对应于您希望绘制数据的分辨率(这就是为什么人们通常使用5分钟/ 30分钟/ 2小时/ 1天,因为它们与400px宽度的每日,每周,每月和每年图形很好地对应)

答案 1 :(得分:0)

您可能希望查看时间序列数据库并测试一些具有内置可视化的系统,这是一个允许您执行聚合和PHP包装的API。时序数据库针对时间戳数据的高效存储进行了优化,并具有用于时间序列转换的内置功能。

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