Структура и понимание инструмента RRD

В настоящее время я наблюдаю за 5 различными зданиями, в каждом здании около 300 комнат. В каждой комнате есть 4 датчика, три из которых контролируют температуру в разных точках комнаты, а один — количество энергии (киловатт), потребляемой комнатой.

В настоящее время я опрашиваю каждый датчик каждые 15 минут, что дает 576 000 записей в день, количество зданий, которые я отслеживаю, скоро увеличится.

В настоящее время я храню всю информацию в MySQL, у меня есть таблица MySQL для каждого типа датчика, поэтому таблицы называются «мощность», «temp1», «temp2», «temp3». Столбцы в этих таблицах: «id», «building_id», «эпоха», «значение».

Затем я использую эти данные для создания графиков с помощью библиотеки Chart.js и статистических данных, таких как количество энергии, потребляемой зданием в течение определенного периода времени и т. д. Все это я делаю с помощью PHP.

Я не верю, что моя база данных MySQL сможет справиться с этим без серьезного масштабирования и кластеризации.

Мне нужно иметь возможность просматривать исторические данные за 5 лет, хотя некоторая степень детализации может быть потеряна через определенный период времени.

Мне сообщили, что RRD может решить мою проблему, и я провел некоторое исследование, но у меня все еще есть некоторые вопросы.

Позволит ли мне по-прежнему создавать свои собственные графики, используя библиотеку Chart.js? Если я могу получить данные времени/значения JSON из RRD, все должно быть в порядке.

Сколько различных RRD-файлов мне также потребуется создать? Нужно ли мне по одному на здание? За номер? На датчик? Будет ли это по-прежнему легко управлять.

У меня есть PHP-скрипты, которые запускаются с 15-минутными интервалами, извлекают данные с датчиков с помощью SNMP, а затем вставляют данные в MySQL, если я могу использовать те же сценарии для вставки в RRD, что также было бы здорово, судя по тому, что я видел. вы можете использовать PHP для вставки в RRD, так что все должно быть в порядке.

РЕДАКТИРОВАТЬ: сейчас я читаю http://michael.bouvy.net/blog/en/2013/04/28/graph-data-rrdtool-sensors-arduino/, который начал отвечать на некоторые из моих вопросов.


person Jack Brown    schedule 05.04.2015    source источник


Ответы (2)


Будет ли у вас один файл RRD с 6000 метриками или 5 файлов с 1200 метриками и т. д., зависит от того, как вы управляете данными.

Во-первых, не стоит группировать вместе метрики, по которым выборки поступают в разные моменты времени. Таким образом, если вы выбираете одну комнату за раз, у вас, вероятно, должен быть один файл RRD для каждой комнаты (с 4 показателями в нем). Это будет зависеть от того, что управляет вашими датчиками; если у вас есть одно устройство на комнату или здание. Получение данных и построение графика работают независимо от того, есть ли у вас один файл или тысяча (хотя сценарий «тысяча» работает намного лучше в последней версии RRDTool).

Во-вторых, вероятно ли, что вы добавите новые точки данных (IE, здания или комнаты)? Вы не можете (легко) добавить новые показатели в существующий файл RRD. Итак, если вы планируете добавить новое здание в будущем или добавить или удалить комнату, то, возможно, будет лучше по одному RRD на здание или по одному на комнату.

Не имея дополнительной информации, я бы предположил, что вам лучше использовать один RRD на комнату (содержащий 4 метрики) и обновлять их отдельно. Назовите файлы в соответствии с идентификаторами здания и комнаты, и они могут содержать мощность и 3 значения температуры в соответствии с эпохой.

Для построения графиков RRDTool, конечно же, может создавать свои собственные графики, напрямую обращаясь к данным. Однако, если вы хотите извлечь данные и поместить их в график самостоятельно, это возможно; функция Xport позволит вам извлечь необходимые точки данных (возможно, из нескольких файлов RRD и с агрегированием), которые вы затем можете передать в графическую библиотеку по вашему выбору. Существует также функция Fetch, если вам нужны необработанные данные.

Если ваши выборки данных поступают с 15-минутными интервалами, убедитесь, что вы правильно настроили интервал RRD, Heartbeat и RRA. В частности, в RRA будет указано, какая агрегация выполняется и как долго данные хранятся с более высокой степенью детализации. RRA в целом должны соответствовать разрешениям, в которых вы ожидаете отображать данные (именно поэтому люди обычно используют 5 минут / 30 минут / 2 часа / 1 день, поскольку они хорошо соответствуют ежедневным, еженедельным, месячным и годовым графикам при ширине 400 пикселей)

person Steve Shipway    schedule 06.04.2015

Возможно, вы захотите взглянуть на базы данных временных рядов и протестировать несколько систем со встроенной визуализацией, API, позволяющим выполнять агрегацию, и PHP-оболочки. Базы данных временных рядов оптимизированы для эффективного хранения данных с временными метками и имеют встроенные функции для преобразования временных рядов.

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

person Sergei Rodionov    schedule 31.07.2015