Иногда интересно посмотреть статистику по некоторым параметрам, например, температуру в помещении, входное напряжение, потребление. Простой и удобный способ - это использовать Grafana. Поиском находится разрозненная информация. Пока в памяти свежо, как это делается, и что бы потом самому не вспоминать, описал поэтапно, что, где и как. На сайте производителя, а также сайте Grafana есть инструкции. Также есть хорошая видеоинструкция. Их и будем использовать.

1. Установим Docker по инструкции.

Установим необходимые зависимости:

apt update && apt install ca-certificates curl gnupg lsb-release iptables

Добавим репозиторий с пакетами docker:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

Добавим GPG ключ для репозитория:

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Настроим возможность Docker настраивать виртуальные сети и пробрасывать порты.

update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

Настроим симлинк для папки конфигурации

mkdir /mnt/data/etc/docker && ln -s /mnt/data/etc/docker /etc/docker

Создаем файл конфигурации

mcedit /etc/docker/daemon.json

Добавим в него ранее созданную папку

{
  "data-root": "/mnt/data/.docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Устанавливаем сам Docker

apt update && apt install docker-ce docker-ce-cli containerd.io

Если все прошло успешно, то для проверки можно установить контейнер Hello World

docker run hello-world

После его установки, в консоли появится сообщение

Hello from Docker!
This message shows that your installation appears to be working correctly.

значит докер установлен корректно и работает

2. Теперь перейдем к установке Grafana по инструкции
Создаем папку, где будут сохранятся данные из Grafana и даем права на запись

mkdir /mnt/data/grafana
chmod 777 /mnt/data/grafana

Устанавливаем

docker run -d -p 3000:3000 --name=grafana --volume /mnt/data/grafana:/var/lib/grafana --restart=always grafana/grafana

Если все прошло успешно, то можно в браузере открыть веб-интерфейс Grafana
Он доступен по ссылке http://ip_вашего_компьютера:3000
Логин и пароль при первом подключении: Admin:Admin

3. Устанавливаем базу данных Influx
Создаем папку, где будут сохранятся данные и даем права на запись

mkdir /mnt/data/influxdb
chmod 777 /mnt/data/influxdb

Устанавливаем

docker run -d -p 8086:8086 --name=influxdb -v /mnt/data/influxdb:/var/lib/influxdb --restart=always influxdb:1.12

Заходим в influx

docker exec -ti influxdb bash

и создаем нашу базу данных

create database telegraf

4. Устанавливаем Telegraf.
Он необходим, что бы передавать данные из MQTT в базу Influx

Создаем папку для конфигурации Telegraf

mkdir /mnt/data/telegraf

Создаем в ней файл конфигурации Telegraf

mcedit /mnt/data/telegraf/telegraf.conf

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

[[inputs.mqtt_consumer]]
  servers = ["tcp://ip_вашего_сервера:1883"]

  topics = [
	"/devices/контролируемый_топик_1",
    "/devices/контролируемый_топик_2",
  ]

  data_format = "value"
  data_type = "float"

[[outputs.influxdb]]
   urls = ["http://ip_вашего_сервера:8086"]

Устанавливаем Telegraf

docker run -d --name=telegraf -v /mnt/data/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro --restart=always telegraf

Если установлено верно, можно переходить к веб-интерфейсу Grafana.

5. Настраиваем подключение к базе данных в веб-интерфейсе.
- переходим на вкладку Connection,
- далее Data Source,
- нажимаем Add Data Source,
- выбираем InfuxDB.
Далее в настройках указываем:
в поле URL - http://ip_вашего_компьютера:8086
в поле Database - telegraf.
B нажимаем Save&Test.

6. Создаем дашборды.
- переходим на вкладку Dashboards
- нажимаем Create Dashboards,
- выбираем Add visualization

И теперь уже можем настраивать вывод информации с топиков, которые мы указали в конфиге telegraf.

  • выбираем базу Influxdb

  • в поле From Select measurement выбираем нашу базу mqtt_consumer

  • выбираем значение topic::tag

  • в поле select tag value выбираем нужный топик

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

Вот собственно и все.

p.s.: если необходимо добавить топик, то надо добавить его в конфигурационный файл telegraf, и рестартовать telegraf.

Комментарии (5)


  1. Vilos
    29.09.2025 09:20

    Окей, а докер-то зачем??!?? Хоспаде, ну пихают его куда попадя и не попадя!


    1. Korleone74 Автор
      29.09.2025 09:20

      Прим настройке/тестирование удобно


  1. oleg_km
    29.09.2025 09:20

    Может, чтобы было проще снести, когда понял что наигрался? Я вот поигрался Рокетчатом, теперь думаю, как бы его гарантированно удалить


    1. Vilos
      29.09.2025 09:20

      sudo apt purge [имя] - разве не решает? ;)


  1. oleg_km
    29.09.2025 09:20

    А ини файлы и прочие базы данных? Там сокеты всякие создаются. Я в линуксах не очень