Установка InfluxDB и Grafana на Raspberry Pi

Вот и дошла очередь до главных задач которые должна решать моя Raspberry PI3.
Это будет домашний сервер (с выделенным IP адресом)  для хранения и визуализации данных которые собирают и присылают модули ESP8266 находящиеся у меня дома и на даче. В любой момент можно посмотреть что реально происходит в контролируемых зонах, что было, как изменяется и чего можно ожидать. Например мне очень важно знать количество воды в колодце и скорость ее расходования и восстановления. 

Настройка модуля на прошивке WiFi-IoT



AquaStopR,t1=rssi rssi=_RSSI_i,vlag=_SHT30H_,temp=_SHT30T_,voda=_ADCI1_i
Формат строки соблюдаем! Только один пробел!


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

Итак смотрим - Grafana, представляет собой удобный дашборд для выборки и визуализации данных, для их хранения используется база данных InfluxDB  

Все манипуляции делаем из консоли Linux (примерное описание для чайников смотри в соседней теме). Примечание для чайников - текст с  таким шрифтом    можно скопировать и вставить правым кликом мышки в окно терминала  Raspberry.


Первое, что мы должны сделать перед установкой InfluxDB на Raspberry Pi, — это убедиться, что все установленные на данный момент пакеты ОС обновлены.
Выполняем следующие две команды:

sudo apt update
sudo apt upgrade

Установка и настройка InfluxDB 2.x на Raspberry Pi


Теперь произведем непосредственную установку 

InfluxDB 2.x Open Source Time Series Database


Выбираем на сайте загрузки  ( https://www.influxdata.com/downloads ) последнюю версию и нужную нам платформу  Ubuntu&Debian

 Выполняем указанные инстрeкции :
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt-get update && sudo apt-get install influxdb2

Все установили! 

Но сразу установим еще и Telegraf  без которого InfluxDB не хочет получать внешние данные.

Telegraf open source data collector

 Выполняем указанные инстрeкции :
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt-get update && sudo apt-get install telegraf
Установили.


Теперь запускаем InfluxDB сервер в работу.
sudo service influxdb start
Проверка состояния Telegraf:

sudo systemctl status telegraf

Настраиваем систему.

Заходим по адресу 192.168.х.хх:8086


и нажимаем “GET STARTED” и первым делом создаем учетную запись, указываем название организации и корзины для данных (Organization Name и Bucket Name). После заполнения нажать «CONTINUE», а в следующем окне «QUICK START»

Далее идем выбирать источник получения данных




Выбираем Socket Listener  (UDP Listener - устаревший и нерабочий плагин)




 Создаем новую конфигурацию системы



Задаем имя конфигурации и выбираем корзину для данных


Теперь мы имеем корзину для приема данных



Теперь идем в окно  Telegraf 

Нажимаем на имя конфигурационного файла 



Находим настройки UDP , прописываем нужный адрес и сохраняем конфиг.


Включаем Telegraf



Пункт первый пропускаем - Telegraf мы уже установили
Второе 
- создаем API token 
- копируем полученную строку export INFLUX_TOKEN=<INFLUX_TOKEN>
- включаем в терминале Raspberry
Третье
- копируем команду для старта Telegraf
- включаем в терминале Raspberry



Вот вроде и все!

Теперь в разделе данных настраиваем фильтры, нажимаем Submit и получаем графики данных, если они уже передаются .





Ура! У нас все получилось и работает.

Для того чтобы база данных не переполнила флешку можно поставить ограничение на время хранения данных, по умолчанию стоит бесконечность. При переполнении памяти InfluxDB не запускается. 







Перезапускаем всю систему и все проверяем ))

Установка и настройка Grafana на Raspberry Pi


Традиционно мы должны  перед установкой Grafana на Raspberry Pi,  убедиться, что все установленные на данный момент пакеты ОС обновлены.
Выполняем следующие две команды:

sudo apt update
sudo apt upgrade

А затем начинаем танцы с бубнами!
В связи с санкциями - Sorry, our service is currently not available in your region.

Поэтому!
Идем сюда - https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1&platform=arm
и через любой анонимайзер скачиваем текущую версию на PC для вашей ОС - https://dl.grafana.com/enterprise/release/grafana-enterprise_9.2.6_arm64.deb


Устанавливаем  WinSCP и непринужденно перекидываем файл на малинку, в - корень/home/Pi


Далее устанавливаем :

sudo dpkg -i /home/pi/grafana-enterprise_11.0.0_arm64.deb


Распаковка идет достаточно долго, наберитесь терпения .....




Теперь включаем сервер командой:

sudo service grafana-server start

Добавляем автозапуск при старте системы :

sudo systemctl enable grafana-server




Перезапускаем всю систему и все проверяем ))


Доступ к Grafana через Web интерфейс
https://  /локальный адрес/:3000

Стандартные логин и пароль — admin/admin

Подключение к нашей базе данных InfluxDB  - https://docs.influxdata.com/influxdb/v2/tools/grafana/?t=InfluxQL
 
Query Language - InfluxQL
В поле Custom HTTP Headers, выбираем Add Header.

Header: В этом поле пишем Authorization
Value: В этом поле вставляем Token созданный для  InfluxDB API token. Вот пример:
Token y0uR5uP3rSecr3tT0k3n   ( Не сам Token а текст с токеном )







Для простоты создаем в InfluxDB отдельный Token с полными правами :




Далее примеры из старой версии Grafana




Вводим адрес сервера


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


Создаем новый Dashboard


Добавляем в него новые панели или ряды (группы панелей)


Настраиваем графики 



Вот вроде и все дела.

Учить вас пользоваться приложением я не буду, там много чего есть интересного и все достаточно интуитивно понятно. Да я и сам многого не знаю )))



Настраиваем уведомления о событиях :

Используем  мессенджер  «Telegram»

Для общения создаем (или используем имеющийся) бот в Телеграм
с помощью робота BotFather , там же получаем  BOT API Token 
который выглядит приблизительно так - 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
Chat ID   можно узнать с помощью специального Show Json Bot
При его запуске получите следующую информацию :
 "chat": {
   "id": 123456789 ......


Заполняем полученные значения









Установка уведомлений о событиях через Яндекс

Смотрим инструкцию у Яндекса!!!!!!
Настроить  отправку по протоколу SMTP

Настройка одного протокола SMTP обычно требуется на устройствах, которые только отправляют письма, но не принимают их.

Шаг 1. Настройте ящик
Откройте раздел «Почтовые программы» в настройках Яндекс Почты.
Выберите опции С сервера imap.yandex.ru по протоколу IMAP и Пароли приложений и OAuth-токены.
Сохраните изменения.

Шаг 2. Создайте пароль приложения
Откройте страницу Управление аккаунтом.
В разделе Пароли и авторизация выберите Включить пароли приложений. Подтвердите действие и нажмите Создать новый пароль.
Если вы включили двухфакторную аутентификацию, просто нажмите Создать пароль приложения.

Выберите тип приложения Почта.
Придумайте название пароля, например укажите название приложения, для которого вы создаете пароль. С этим названием пароль будет отображаться в списке.
Нажмите кнопку Создать. Пароль приложения отобразится во всплывающем окне.
Ограничение. Созданный пароль можно увидеть только один раз. Если вы ввели его неправильно и закрыли окно, удалите текущий пароль и создайте новый.

Шаг 3. Настройте программу
адрес почтового сервера — smtp.yandex.ru;
защита соединения — SSL;
порт — 465;
Для доступа к почтовому серверу укажите ваш логин и пароль приложения. Используйте тот пароль, который вы создали для почтового приложения на предыдущем шаге.



sudo nano /etc/grafana/grafana.ini
Конфигурирование ini файла :

[smtp]
enabled = true
host = smtp.yandex.ru:465
user = XXXX
password = XXXX
;cert_file =
;key_file =
skip_verify = true
from_address = XXXX@yandex.ru



[smtp]
;enabled = false
;host = localhost:25
;user =
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
;password =
;cert_file =
;key_file =
;skip_verify = false
;from_address = admin@grafana.localhost
;from_name = Grafana
# EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com
# SMTP startTLS policy (defaults to 'OpportunisticStartTLS')
;startTLS_policy = NoStartTLS





Рестарт Grafana-server service

Успехов !!


Удаление программ :

Telegraf
sudo systemctl stop telegraf     – Stops the Telegraf service.
sudo apt-get purge telegraf       – Uninstalls Telegraf and removes its configuration files.
sudo rm -rf /etc/telegraf/           – Removes additional Telegraf configuration files.
sudo apt-get update                   – Updates the package database.
sudo apt-get autoremove           – Removes unused dependencies.

Influxdb
sudo tar cvzf influxdb-backup.tar.gz /var/lib/influxdb/     – Creates a backup of InfluxDB data.
sudo systemctl stop influxdb                                             – Stops the InfluxDB service.
sudo apt-get purge influxdb                  – Removes the InfluxDB package and its configuration files.
sudo rm -rf /var/lib/influxdb/                – Deletes the InfluxDB data directory.
sudo rm -rf /etc/influxdb/                      – Deletes the InfluxDB configuration directory.
sudo userdel -r influxdb                        – Removes the InfluxDB user.
sudo groupdel influxdb                         – Removes the InfluxDB group.









2 комментария: