Статья

Установка Grafana на Amazon WS

Grafana очень удобный инструмент для отображения текущих и накопленных данных. Для накопления данных очень удобно использовать специально для этих целей созданную базу данных InfluxDB.

Поэтапно наш процесс будет выглядеть как на диаграмме:

1. Установка Mosquitto-broker

2. Подключение контроллера(ов) Wirenboard по MQTT

3. Установка базы данных

4. Установка скрипта записи поступающих данных из брокера в базу данных

5. Установка и примеры конфигурирования Grafana

1. Установка Mosquitto-broker

Первым делом необходимо подключиться к нашему виртуальному серверу на AmazonWS (в дальнейшем "к AmazonWS") с помощью любой терминальной программы, например PuTTY.

 Далее выполняем команду установки:

sudo apt-get install mosquitto mosquitto-clients

Для проверки работоспособности открываем еще одно такое же соединение.

В первом PuTTY подписываемся на топик:

mosquitto_sub -h localhost -t test

Во втором PuTTY публикуем топик:

mosquitto_pub -h localhost -t test -m "hello world"

Если в первом PuTTY появилось содержимое топика hello world, то это значит брокер запустился и работает исправно. 

Теперь нужно, чтобы он был подписан вообще на все входящие сообщения:

mosquitto_sub -t "/#" -v

2. Подключение Wirenboard по MQTT

Чтобы сделать настройки на Wirenboard нужно отредактировать на нем файл /etc/mosquitto/conf.d/bridge.conf.

Для этого подключаемся программой WinSCP и открываем файл bridge.conf на редактирование.

В этом файле переписываем содержимое на следующее:

connection amazon address 3.17.73.13:1883 notifications true notification_topic /client/wb_SERIAL/bridge_status topic /devices/# both 2 "" /client/wb_SERIAL

Немного поясню:

после connection пишем любое свое наименование для этого правила;после address пишем IP-адрес нашего AmazonWS с портом 1883

(в моем случае это адрес 3.17.73.13)

  • вместо wb_Serial можно подставить идентификатор контроллера, чтобы потом отличать его данные от других таких же с других контроллеров в общей базе данных.

service watchdog stop service mosquitto restart service watchdog start

Остановка watchdog рекомендуется для того, чтобы если bridge.conf  "кривой" система не ушла в циклическую перезагрузку, из которой потом трудно выйти.

Через несколько секунд в терминальном окне AmazonWS должны "побежать" поступающие сообщения.

3. Установка базы InfluxDB на AmazonWS

Чтобы поступающие данные могли быть сохранены необходимо установить хранилище. Для этой цели подходит база данных InfluxDB.

Инструкция находится по адресу.

Далее последовательно выполняем в окне терминала PuTTY, подключенного к AmazonWS следующие команды:

wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - source /etc/lsb-release echo "deb https://repos.influxdata.com/$ $ stable" | sudo tee /etc/apt/sources.list.d/influxdb.list sudo apt-get update && sudo apt-get install influxdb

И после этого, чтобы база данных была готова к использованию ее необходимо запустить:

sudo systemctl unmask influxdb.service sudo systemctl start influxdb

sudo influxd

После проверки необходимо задать имя базы данных, в которой будут храниться наши накапливаемые записи.

Для этого запустить команду

influx

После этого база готова получать команды или запросы. Введем:

CREATE DATABASE mqtt_data

(Вместо mqtt_data можно зарегистрировать свою базу данных, но тогда надо редактировать скрипт mqtt_to_influxdb.py)

Чтобы вернуться в консоль Ctrl+C

4. Установка скрипта mqtt_to_influxdb.py

Следующим шагом необходимо установить на AmazonWS скрипт, записывающий поступающие сообщения из MQTT в базу данных InfluxDB.

Исходная инструкция находится по адресу.

Скачаем сам скрипт на локальный компьютер.

Теперь нужно подготовить AmazonWS для работы этого скрипта. В терминальном окне PuTTY, подключенного к AmazonWS последовательно выполняем команды:

sudo apt install python3-pip pip3 install paho-mqtt python-etcd pip3 install influxdb

[Unit] Description=Mqtt to Influxdb Autorun After=multi-user.target Requires=influxd.service [Service] Type=idle User=ubuntu ExecStart=/usr/bin/python3 /usr/local/bin/mqtt_to_influxdb.py "#" Restart=always TimeoutStartSec=10 RestartSec=10 [Install] WantedBy=multi-user.target

В том случае если установка осуществляется не на AmazonWS, внимательно заполните поле параметра User, где вместо ubuntu необходимо подставить то имя, от которого производится установка. Например root.

sudo systemctl enable mqtt_to_influxdb sudo systemctl start mqtt_to_influxdb sudo systemctl daemon-reload

sudo systemctl status mqtt_to_influxdb

5. Установка Grafana

Источник

В терминале PuTTY последовательно набираем команды:

wget https://dl.grafana.com/oss/release/grafana_5.4.2_amd64.deb sudo apt-get install -y adduser libfontconfig sudo dpkg -i grafana_5.4.2_amd64.deb sudo apt-get install -y apt-transport-https sudo service grafana-server start sudo systemctl enable grafana-server.service

Чтобы к сервису Grafana извне был обеспечен доступ, необходимо в Security Groups на вкладке Inbounds добавить еще одно правило с портом 3000.
Из свойств запущенного экземпляра сервера AmazonWS на вкладке Instances снова берем адрес по которому он доступен, добавляем к нему порт 3000 и запускаем через адресную строку браузера.По умолчанию вводим Логин: admin  Пароль: adminи следующим шагом заменяем его на свой, и заходим в первоначальные настройки.
После нажатия кнопки Add Data Source выберите InfluxDBЗаполните поля URL: http://localhost:8086Database: mqtt_dataНажмите кнопку Save & TestЕсли все хорошо, то можно продолжить нажав + и выбрав Dashboard.
Сверху нажмите на выпадающее меню и выберите Edit.
На вкладке Metrics заполните поля как указано в образце и получите вывод своей первой панели с данными.

Подробнее про установку системы и настройку панелей вывода данных смотрите на видео по ссылке:


Большое спасибо за статью. Вопрос, поставил Grafana на Raspberry PI всё работало примерно месяц, потом начались какие-то глюки. Не пишутся в базу данных значения датчиков с wirenboard, при этом в MQTT они приходят. причем, раз в несколько дней данные появляются на некоторое время, а потом опять пропадают. Что это может быть?

  • sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
  • sudo apt-get update
  • sudo apt-get install mosquitto
  • sudo apt-get install mosquitto-clients
  • sudo apt clean

"both" в bridge.conf,  а также отсутствие аутентификации на брокере со стороны AWS, создает большую дыру в безопасности. Кто-хочет может что-угодно запаблишить на брокер в AWS, и это передастся на контроллер. Думаю желательно в bridge.conf ставить out, а брокер на авс секьюрить


Вернуться назад
Вернуться назад