Здесь могла бы быть реклама
Она помогает блогу развиваться.
Кажется, сегодня она немного загрустила.

Главная страница » Сеть и сервисы » Grafana + InfluxDB на Raspberry Pi: создаём красивый дашборд для мониторинга всего дома
Grafana + InfluxDB на Raspberry Pi: создаём красивый дашборд для мониторинга всего дома
Сеть и сервисы

Grafana + InfluxDB на Raspberry Pi: создаём красивый дашборд для мониторинга всего дома

31.03.2026 171
Grafana + InfluxDB на Raspberry Pi: создаём красивый дашборд для мониторинга всего дома

Пошаговое руководство по установке Grafana и InfluxDB на Raspberry Pi для красивого и мощного мониторинга умного дома, сервера и DIY-устройств. Все команды и конфиги внутри.

Приветствую всех энтузиастов умного дома и DIY-проектов! Сегодня мы соберём на нашем верном Raspberry Pi мощную и, что важно, красивую систему мониторинга. Если вы, как и я, любите визуализировать данные — от температуры процессора одноплатника до потребления электроэнергии во всей квартире — этот материал для вас. Мы установим InfluxDB как высокопроизводительную базу данных для временных рядов и Grafana для построения интерактивных дашбордов. Всё это будет работать на Raspberry Pi 4 или 5, превращая его в мозговой центр домашней аналитики.

Зачем это нужно? От данных к решениям

До того как я настроил эту связку, мои данные были разрознены: логи здесь, показания датчиков там, метрики системы — в третьем месте. InfluxDB собирает все временные ряды в одном хранилище, оптимизированном именно для такой работы. А Grafana — это ваш персональный «ЦУП», где на одном экране можно увидеть температуру в комнатах, загрузку сетевого интерфейса, уровень заряда аккумуляторов в DIY-устройствах и потребление воды. Это не просто «красивые графики» — это инструмент для принятия решений. Вы увидите аномалии, поймёте закономерности и сможете оптимизировать работу своих систем, будь то умный дом или домашний сервер.

Подготовка Raspberry Pi

Я использую Raspberry Pi 4 с 4 ГБ ОЗУ, но подойдёт и модель 3B+ (просто будьте аккуратнее с нагрузкой), и тем более — мощная Pi 5. В качестве ОС я предпочитаю Raspberry Pi OS Lite (64-bit) для экономии ресурсов, но вы можете использовать и десктопную версию.

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

sudo apt update && sudo apt upgrade -y

Эта команда обновляет списки пакетов и устанавливает все доступные обновления. Рекомендую делать это регулярно.

Устанавливаем необходимые вспомогательные пакеты:

sudo apt install -y curl wget gnupg software-properties-common apt-transport-https

curl и wget для загрузки файлов, gnupg для работы с ключами репозиториев.

Установка и базовая настройка InfluxDB

InfluxDB — сердце нашей системы. Мы установим версию 2.x, которая объединяет и базу данных, и её веб-интерфейс для администрирования.

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

# Импортируем GPG-ключ репозитория
wget -q https://repos.influxdata.com/influxdata-archive.key
sudo gpg --yes --dearmor -o /usr/share/keyrings/influxdata-archive-keyring.gpg < influxdata-archive.key

# Добавляем репозиторий для текущей версии ОС (Bookworm)
echo "deb [signed-by=/usr/share/keyrings/influxdata-archive-keyring.gpg] https://repos.influxdata.com/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

# Обновляем кэш пакетов и устанавливаем InfluxDB
sudo apt update
sudo apt install -y influxdb2

Важный момент: Убедитесь, что в команде echo указана правильная кодовое имя вашей ОС. Для Raspberry Pi OS, основанной на Debian Bullseye, замените bookworm на bullseye. Неверное имя — самая частая причина ошибки E: The repository '...' does not have a Release file.

Активируем и запускаем службу:

sudo systemctl unmask influxdb
sudo systemctl enable --now influxdb

Команда unmask нужна на случай, если служба была ранее заблокирована. enable --now включает автозагрузку и сразу запускает службу.

Проверяем, что служба работает:

sudo systemctl status influxdb

В выводе вы должны увидеть active (running). Если статус failed, проверьте журнал: sudo journalctl -u influxdb -f.

Первоначальная настройка InfluxDB через веб-интерфейс

Теперь нужно завершить установку. Откройте в браузере адрес http://[IP_ВАШЕГО_RASPBERRY_PI]:8086. Вы увидите приветственную страницу.

  1. Создайте первого пользователя: Введите имя пользователя (например, admin), пароль и название организации (например, MyHome). Запомните эти данные!
  2. Создайте первое ведро (Bucket): Это аналог базы данных. Назовите его, например, home_metrics. Можно оставить срок хранения данных по умолчанию.
  3. Создайте токен доступа: На шаге настройки токена выберите «All Access API Token». Скопируйте и сохраните этот токен в надёжном месте! Он понадобится для отправки данных в базу.

Совет из практики: Сразу создайте отдельный токен с ограниченными правами только на запись в конкретное ведро для ваших клиентов (например, для ESP32). Это повысит безопасность.

Установка Grafana

Grafana — это лицо нашей системы. Установим её из официального репозитория.

Добавляем репозиторий Grafana:

# Импортируем GPG-ключ
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

# Добавляем репозиторий
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install -y grafana

Активируем и запускаем службу Grafana:

sudo systemctl enable --now grafana-server

Проверяем статус: sudo systemctl status grafana-server.

Настройка Grafana: добавляем источник данных

Откройте в браузере http://[IP_ВАШЕГО_RASPBERRY_PI]:3000. Стандартные учётные данные: admin / admin. Система сразу попросит сменить пароль — сделайте это.

Теперь добавим InfluxDB как источник данных: 1. В левом меню нажмите на шестерёнку (Configuration) -> Data Sources. 2. Нажмите Add data source и выберите InfluxDB. 3. В настройках: * Query Language: Выберите Flux (более современный и мощный язык запросов для InfluxDB 2.x). * URL: http://localhost:8086 * Organization: Введите название организации, которую вы создали в InfluxDB (например, MyHome). * Token: Вставьте ваш "All Access API Token" из InfluxDB. * Default Bucket: Выберите созданное вами ведро home_metrics. 4. Нажмите Save & Test. Должно появиться зелёное уведомление "Data source is working". Если ошибка — проверьте, что InfluxDB запущен, а токен и организация указаны верно.

Наполняем базу данными: первые метрики

База и дашборд готовы, но они пусты. Давайте отправим туда первые данные. Начнём с мониторинга самого Raspberry Pi.

Вариант 1: Telegraf — сборщик метрик системы

Telegaf — агент от создателей InfluxDB, который умеет собирать сотни разных метрик. Установим его:

sudo apt install -y telegraf

Теперь нужно настроить Telegraf для отправки данных в нашу InfluxDB. Отредактируем конфигурационный файл:

sudo nano /etc/telegraf/telegraf.conf

Нам нужно изменить только секцию [[outputs.influxdb_v2]]. Найдите её и приведите к виду:

[[outputs.influxdb_v2]]
  urls = ["http://127.0.0.1:8086"]
  token = "ВАШ_ALL_ACCESS_ТОКЕН_ЗДЕСЬ"
  organization = "MyHome"
  bucket = "home_metrics"

Секции [[inputs.cpu]], [[inputs.mem]], [[inputs.disk]] и другие уже активны по умолчанию и будут собирать данные о системе.

Запускаем Telegraf:

sudo systemctl enable --now telegraf

Через минуту-две данные начнут поступать в InfluxDB.

Вариант 2: Простой скрипт на Python для кастомных метрик

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

Сначала установим клиентскую библиотеку:

pip3 install influxdb-client

Создадим файл ~/send_metric.py:

import influxdb_client
from influxdb_client.client.write_api import SYNCHRONOUS
import psutil
import time

# Конфигурация
bucket = "home_metrics"
org = "MyHome"
token = "ВАШ_ТОКЕН"
url = "http://localhost:8086"

client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
write_api = client.write_api(write_options=SYNCHRONOUS)

# Собираем кастомную метрику, например, температуру CPU (через psutil)
cpu_temp = psutil.sensors_temperatures().get('cpu_thermal', [None])[0].current if hasattr(psutil, "sensors_temperatures") else None

if cpu_temp:
    p = influxdb_client.Point("raspberry").tag("host", "pi4").field("cpu_temperature", cpu_temp)
    write_api.write(bucket=bucket, org=org, record=p)
    print(f"Записана температура CPU: {cpu_temp}°C")

# Можно добавить любые другие данные
p = influxdb_client.Point("custom_metric").field("my_value", 42)
write_api.write(bucket=bucket, org=org, record=p)

client.close()

Запустите скрипт: python3 ~/send_metric.py. Он отправит точку данных в InfluxDB.

Совет: Добавьте вызов этого скрипта в cron (crontab -e) для периодического выполнения, например, каждые 5 минут: */5 * * * * /usr/bin/python3 /home/pi/send_metric.py.

Создаём первый дашборд в Grafana

Вернёмся в Grafana по адресу :3000. 1. В левом меню нажмите на значок досок (Dashboards) -> New Dashboard -> Add visualization. 2. В верхней части экрана выберите источник данных InfluxDB. 3. В редакторе запросов (внизу) выберите язык Flux. Вот пример запроса для отображения загрузки CPU: flux from(bucket: "home_metrics") |> range(start: -1h) |> filter(fn: (r) => r._measurement == "cpu") |> filter(fn: (r) => r._field == "usage_user") |> aggregateWindow(every: 30s, fn: mean) Этот запрос берёт данные из ведра home_metrics за последний час, фильтрует их по измерению cpu и полю usage_user (пользовательская загрузка), и усредняет значения за каждые 30 секунд. 4. Поэкспериментируйте с визуализациями на панели справа: график (Graph), статистика (Stat), индикатор (Gauge). Для температуры CPU лучше подойдёт Gauge с заданными порогами (зелёный до 60°C, жёлтый до 70°C, красный выше). 5. Нажмите Apply в правом верхнем углу. Не забудьте Save dashboard (дискетка вверху) и дать ему имя, например, «Обзор Raspberry Pi».

Поздравляю! У вас теперь есть работающая система мониторинга.

Куда дальше? Интеграции и идеи

Сила этой связки в её универсальности. Вот что можно подключить дальше:

Проверка результата и типичные проблемы

Как убедиться, что всё работает? 1. InfluxDB: Перейдите на http://[IP]:8086, авторизуйтесь. Во вкладке Data Explorer выберите ведро home_metrics и выполните простой запрос Flux: from(bucket: "home_metrics") |> range(start: -5m). Вы должны увидеть список записей. 2. Grafana: Создайте новую панель с простым запросом к данным Telegraf (например, загрузка памяти). Если график строится — цепочка работает. 3. Telegraf: Проверьте логи: sudo journalctl -u telegraf -n 50. Ошибки подключения к InfluxDB будут видны здесь.

Типичные ошибки: * "Failed to connect to InfluxDB" в Grafana: Проверьте URL, токен и название организации. Убедитесь, что InfluxDB слушает на 0.0.0.0:8086 (проверьте настройки в /etc/influxdb/config.toml, параметр bind-address). * Нет данных в Data Explorer: Убедитесь, что Telegraf запущен и в его конфиге указан правильный токен и ведро. Проверьте, пишет ли что-то ваш скрипт или устройство. * Высокая нагрузка на Raspberry Pi: InfluxDB 2.x может быть прожорлив для слабого железа. Для Pi 3B+ рассмотрите возможность использования InfluxDB 1.8 (более легковесная) или переноса базы данных на более мощную машину, оставив на Pi только сбор метрик.

Заключение

Мы с вами развернули на Raspberry Pi профессиональный стек для мониторинга — InfluxDB для хранения временных рядов и Grafana для их визуализации. Эта система станет отличной основой для анализа работы не только вашего сервера, но и всего умного дома, DIY-устройств и сетевой инфраструктуры. Она масштабируется от нескольких датчиков до тысяч метрик, а гибкость Grafana позволяет создать дашборд именно под ваши нужды.

Экспериментируйте, добавляйте новые источники данных и помните: самая ценная информация часто скрывается в визуализированных закономерностях. Удачи в создании вашего персонального «ЦУПа»!

Понравилась статья?

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

Комментарии (0)
Добавить комментарий
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Routerich AX3000: настройка роутера на OpenWrt, Mesh, TorrServer и сетевое хранилище
Сеть и сервисы
04.09.2026
Routerich AX3000: настройка роутера на OpenWrt, Mesh, TorrServer и сетевое хранилище
Routerich AX3000 с OpenWrt оказался гораздо дружелюбнее, чем можно ожидать от роутера с настолько гибкой прошивкой. Разбираемся с первоначальной настройкой, Mesh,
Как проверить IP на блокировку в ТСПУ: рабочий Python-скрипт для диагностики
Сеть и сервисы
02.09.2026
Как проверить IP на блокировку в ТСПУ: рабочий Python-скрипт для диагностики
Практический Python-скрипт для проверки доступности IP или домена через DNS, TCP 443, TLS и HTTPS. Работает на Windows, Raspberry Pi, Rock Pi, Orange Pi, Debian, Ubuntu
Nginx Proxy Manager: установка и первоначальная настройка reverse proxy с HTTPS в Docker
Сеть и сервисы
02.09.2026
Nginx Proxy Manager: установка и первоначальная настройка reverse proxy с HTTPS в Docker
Пошаговая установка Nginx Proxy Manager в Docker: настройка reverse proxy, получение SSL-сертификатов Let's Encrypt и проксирование сервисов с HTTPS. Практическое
ZeroBlock для OpenWrt: настройка VPN и маршрутизации на Routerich
Сеть и сервисы
05.09.2026
ZeroBlock для OpenWrt: настройка VPN и маршрутизации на Routerich
Практическая инструкция по установке и настройке ZeroBlock на OpenWrt. Разберём подключение VPN, работу с sing-box, DNS, секциями маршрутизации, автозапуск и базовую
Как выбрать LTE/5G-модем для Routerich AX3000: от простого E3372 до T77W968, T99W175 и FM350
Сеть и сервисы
08.09.2026
Как выбрать LTE/5G-модем для Routerich AX3000: от простого E3372 до T77W968, T99W175 и FM350
Как выбрать LTE/5G-модем для Routerich AX3000: разбираемся в LTE Cat, агрегации частот, совместимости, питании, охлаждении и популярных моделях от Huawei, Quectel,
Как работают ТСПУ Роскомнадзора? Разбираемся вместе
Сеть и сервисы
01.09.2026
Как работают ТСПУ Роскомнадзора? Разбираемся вместе
Разбираем устройство ТСПУ: DPI, SNI-фильтрация, DNS-перехват. Узнайте, как проверить работу ТСПУ у провайдера и защитить свой трафик.

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