Друзья, Планирую собрать энергомонитор (напряжение, ток) на ESP32 на 3 фазы. Хочу иметь возможность для подробного анализа собираемых данных. Соответственно нужно хранилище данных, готовое принимать данные раз в секунду, сохранять их в себя, а затем визуализировать (графики, зум). Если хранилище еще попутно будет фидиться через MQTT от Mosquitto, то будет вообще замечательно (данные с других устройств появится возможность тоже анализировать). Собственно вопрос - что использовать для подбой системы хранения и анализа? Есть в хозяйстве пара серверов с Ubuntu, можно на них что-то водрузить. Не хочется изобретать велосипед, хочется более-менее готовое решение.
1. Гоним данные на MQTT брокер 2. забираем данные с брокера узлом NodeRed и 3. отправляем в influxDB 4. анализируем Grafana. Видим приблизительно:
У меня нет. Там все просто и стандартно. Через apt install все устанавливается. Настраивать все равно придётся под свои данные. У меня на NAS Qnap два виртуальных Debian, один держит mqtt брокер, Node Red и Domoticz, второй - grafana и influxDB.
Как я понимаю, систему если и грузит, то только Grafana, остальное более-менее. На локации у меня сервер загружен как правило на 70-80% по CPU, есть сервер в связке через VPN на шнурке в 60 мбит, он более менее свободный. Имеет смысл разносить MQTT+NodeRed+influxDB и Grafana соответственно на первый и второй севера? Хотя глянул, на сервере с локацией 100% загрузка на оба ядра. Пишется видеонаблюдение
Я разносил несколько по другому принципу. Раз у меня все висит на одном NAS, то как их не разноси - в сумме будет одно и тоже по нагрузке на железо. Но скажу, что этот софт сильно NAS не грузит, в том числе и grafana. Хотя конечно выборка "за последние 90 дней" может открываться секунды 4-5. Но открывшись не тормозит.
В общем принято стратегическое решение провести апгрейд процессора на материнке на более мощный. Дабы всему хватало места.
Установил Node-red - штука чумовая. Ресурсы почти не жрет (по крайней мере на фоне видеонаблюдения ее просто незаметно). Установил InfluxDB - штука интересная. Прочитал про ограничения по количеству записей, количеству запросов. В теории мой мини-сервер потянет очень много. Пока не дошел до Grafana, пришлось потратить немного времени на то, чтобы понять как запихивать данные в InfluxDB. По ходу образовался вопрос, ответ на который может дать только опыт: В Influx есть "измерения" (некий аналог таблицы в SQL). Допустим у меня есть несколько устройств которые фидят в MQTT свои температуры, давления и т.п. Устройства в разных локалциях. Как лучше организовать "измерение"? Вариантов 2: 1. Сделать одно измерение и по ключам разделять локации. 2. Сделать несколько измерений, по одному для каждой локации. PS. Энергомонитрное пойдет в отдельное измерение, это понятно.
В общем, все настроил, все работает. Все три компонента просто суперические. Пока фидю туда данные с датчиков температуры, серверов и т.п. Как доделаю энергомонитор, пойдет информация и с него. Сделал плоскую "таблицу", где есть несколько "меток" для характеризации и одно value для значения. Графана подтягивает и обрабатывает норм.
Спасибо за то, что делитесь знаниями. Не знал до этого момента про Influx и Grafana. Специально зарегистрировался, чтобы поблагодарить, до этого момента только читал форум Единственно не совсем понял, для чего NodeRed и MQTT (для сторонних устройств?), ведь ESP32 может сразу писать в InfluxDB, а Grafana может сразу брать данные из базы. Буду благодарен, если проясните роль NodeRed в этой схеме.
Знаете, жил такой товарищ Гегель, он взял да и придумал диалектику. Увидел в ней три закона. Один обозвал как переход количественных изменений в качественные. Суть вот в чем. Если у вас одно и только одно устройство, вы можете делать так как вы говорите - писать с него в базу и все. Когда у вас этих устройств туча и зачастую концепции меняются - сегодня одно, завтра другое, у вас не просто многАустройств, у вас, по Гегелю, новое качество. И здесь проще иметь одно место где находятся все данные и неспеша с ними работать. Что-то идет в Home Assistant, что-то в базу. Сегодня вам нужно одно, через год-два - другое. Почитайте вот это. Я пытаюсь там подробнее объяснить зачем нужен MQTT.