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

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


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

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

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


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

sudo apt update
sudo apt upgrade

****************************************************************************

InfluxDB 1.8

https://portal.influxdata.com/downloads/


Are you interested in InfluxDB 1.x Open Source?
InfluxDB is an open source time series database. It has everything you need from a time series platform in a single binary – a multi-tenanted time series database, UI and dashboarding tools, background processing and monitoring agent. All this makes deployment and setup a breeze and easier to secure.

The InfluxDB Platform also includes APIs, tools, and an ecosystem that includes 10 client and server libraries, Telegraf plugins, visualization integrations with Grafana, Google Data Studio, and data sources integrations with Google Bigtable, Bigquery, and more.

Version

InfluxDB v1.8.10
Platform

Ubuntu & Debian
SHA256: b2ace09231575df7309a41cea6f9dc7ad716fe4389dc06ac04470a14bd411456

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.8.10_amd64.deb
sudo dpkg -i influxdb_1.8.10_amd64.deb

***********************************************************************




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

Следующий шаг — добавить ключ репозитория InfluxDB в наш Raspberry Pi.

Добавление ключа позволит диспетчеру пакетов Raspbian выполнять поиск в репозитории и проверять пакеты, которые он устанавливает.

Добавляем ключ InfluxDB, выполнив следующую команду.

curl https://repos.influxdata.com/influxdb.key | gpg --dearmor | sudo tee /usr/share/keyrings/influxdb-archive-keyring.gpg >/dev/null

Теперь добавляем репозиторий InfluxDB в список источников. 

echo "deb [signed-by=/usr/share/keyrings/influxdb-archive-keyring.gpg] https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

Снова обновим список пакетов

sudo apt update

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

sudo apt install influxdb

Установили, чтобы InfluxDB запускался при загрузке Raspberry Pi введем следующие команды:

sudo systemctl unmask influxdb

sudo systemctl enable influxdb

Все установили!
Теперь запускаем InfluxDB сервер в работу.

sudo systemctl start influxdb



Настройка конфигуфация InfluxDB заключается в настройке текстового файла influxdb.conf

Будем его редактировать в редакторе, имеющемся по умолчанию в нашем Linux
sudo nano /etc/influxdb/influxdb.conf

Все строки там закомментированы #. Смотрим и открываем нужные настройки.
Для нашей дальнейшей работы необходимо указать время хранения данных и разрешить работу по протоколу UDP.
Смотрим и правим :
...

[meta] 
  # Where the metadata/raft database is stored
  dir = "/var/lib/influxdb/meta"
  ...
[data] 
  # The directory where the TSM storage engine stores TSM files
  dir = "/var/lib/influxdb/data"
  ...
  # The directory where the TSM storage engine stores WAL files.
  wal-dir = "/var/lib/influxdb/wal"  ...
  ...
[retention]
  # Determines whether retention policy enforcment enabled.
  enabled = true

  # The interval of time when retention policy enforcement checks run.
  check-interval = "30m"
[udp]
  enabled = true
  bind-address = "0.0.0.0:45454"   # 45454 адрес на который будут отправляться данные 
  database = "MO"                # имя нашей базы
  batch-size = 1000      # will flush if this many points get buffered
  batch-timeout = "1s"   # will flush at least this often even if the batch-size is not reached
  batch-pending = 5      # number of batches that may be pending in memory
  read-buffer = 0        # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.
  ...
Выходим из редактора Ctrl-X и не забываем сохранить изменения Yes ...Enter


Для принятия настроек требуется перезагрузка!


Для входа  InfluxDB пишем  sudo influx

И вот мы в командной строке.
Connected to http://localhost:8086 version 1.2.x
InfluxDB shell 1.2.x
>
Для выхода в консоль команда - пишем команду Exit.
Для управления, после символа > пишем соответствующие команды.

Создаем собственную базу данных mydb
> CREATE DATABASE mydb
>
Убедимся что все получилось
> SHOW DATABASES
name: databases
---------------
name
_internal
mydb

>
Для начала войдем в свою базу 


> USE mydb
Using database mydb
>

Попробуем ввести свои первые данные в базу
> INSERT node,t1=rssi rssi=-70i,temp=21.0,gpio13=0i,gpio14=0i,mem=1054i
>
Эти данные я взял из прошивки модуля ESP8266. Именно их я и буду в дальнейшем пересылать в InfluxDB. 
Формат строки четко определен правилами, не фантазируйте тут.

Проверяем результат
Посмотрим ВСЕ данные
> SELECT * FROM /.*/ LIMIT 1

name: node
-----------------
time                 gpio13  gpio14  mem    rssi  t1    temp
1485698285375475611  0       0       1054   -70   rssi  21.0
>
Ура! У нас все получилось и работает.

Для того чтобы база данных не переполнила флешку можно поставить ограничение на время хранения данных, по умолчанию стоит бесконечность. При переполнении памяти InfluxDB не запускается. Вот пример на 300 дней.
> CREATE RETENTION POLICY "10 months" ON "MO" DURATION 300d REPLICATION 1 DEFAULT

Вот хелп по  InfluxDB.



Переполнение флешки лечится стиранием всей базы и созданием ее заново ;)
> DROP DATABASE "mydb"
>

==============================================
Если войти в InfluxDB уже не получается, то шаманим в линуксе.

Посмотреть объем занимаемый базой данных можно так:
sudo du -h /var/lib/influxdb/data/

Удалить папку с базой данных можно так :
sudo rm -R /var/lib/influxdb/data/mydb

Стартуем заново
sudo service influxdb start

Про переустановку писал выше.
================================================


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

Установка и настройка 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 grafana-enterprise_9.2.4_arm64.deb


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




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

sudo service grafana-server start

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

sudo systemctl enable grafana-server




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


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

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

Подключение к нашей базе данных InfluxDB





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


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


Создаем новый 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

Успехов !!














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