Полевой мониторинг на мобильных устройствах становится всё более востребованным: быстро развернуть метрики, собрать телеметрию с нескольких источников и визуализировать её в понятных дашбордах. В этой статье Денис Евгеньевич, ведущий эксперт РыбинскЛАБ, покажет практический подход к развёртыванию распределённой системы мониторинга Prometheus + Grafana в окружении Termux.
Важно: мы будем рассматривать сценарий локального развертывания и локальной сети (например, через Wi‑Fi или локальный VPN для организации LAN). Мы не используем VPN для обхода блокировок.
Что получится в итоге
Целевая архитектура выглядит так:
- Termux (устройство-приёмник): Prometheus (сборщик метрик) и Grafana (визуализация).
- Termux (устройства-источники) и/или другие хосты: экспортеры (программы, публикующие метрики в формате Prometheus).
- Сеть: устройства должны быть доступны друг другу по IP внутри локальной сети.
Распределённость достигается тем, что Prometheus обращается к экспортерам по сети, а Grafana читает метрики из Prometheus.
Требования и оговорки
- Android-устройство с установленным Termux.
- ОС и права: Termux обычно работает в обычном режиме, но для сетевых настроек и стабильности полезны дополнительные настройки энергосбережения.
- Доступ по сети: настройте одинаковый сегмент локальной сети (Wi‑Fi или локальная VPN для создания локальной сети).
- Порты: по умолчанию Prometheus использует 9090, Grafana — 3000.
Если вам нужна отказоустойчивая схема для “долго работает в фоне”, обсудите требования с РыбинскЛАБ — подберём вариант конфигурации под ваше оборудование.
Подготовка Termux: обновление и установка базовых пакетов
Начните с подготовки окружения. Выполните команды в Termux:
pkg update
pkg upgrade -y
pkg install -y wget curl tar proot openssh nano net-toolsПонадобится JavaScript обычно не требуется, но для некоторых установок может пригодиться wget и tar. nano — для правки конфигов (можете заменить на свой редактор).
Создание рабочей структуры
Создадим каталог для приложений и конфигов:
mkdir -p ~/monitoring/prometheus ~/monitoring/grafana ~/monitoring/configУстановка Prometheus в Termux
Termux не является “полноценным сервером” по умолчанию, но позволяет запускать нативные бинарники, если вы скачаете подходящую сборку. Один из практичных подходов: скачать официальный архив Prometheus и запустить из Termux.
Перейдите в рабочую директорию:
cd ~/monitoringДалее скачайте версию Prometheus. Подставьте актуальную стабильную версию. Например (пример):
wget https://github.com/prometheus/prometheus/releases/download/v2.55.1/prometheus-2.55.1.linux-armv7.tar.gz -O prometheus.tar.gz
tar -xzf prometheus.tar.gz
mv prometheus-/ prometheus-bin
rm -f prometheus.tar.gzЕсли у вас другой тип процессора (arm64-v8a), используйте корректный архив под вашу архитектуру (arm64/amd64). В противном случае бинарник не запустится.
Проверка:
~/monitoring/prometheus-bin/prometheus --versionНастройка prometheus.yml
Создайте конфигурационный файл:
nano ~/monitoring/config/prometheus.ymlВариант минимальной конфигурации (сбор по HTTP с экспортеров в локальной сети):
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'termux-exporter'
metrics_path: /metrics
static_configs:
- targets:
- '192.168.1.10:9100'
- job_name: 'node-exporter-example'
metrics_path: /metrics
static_configs:
- targets:
- '192.168.1.20:9100'Замените 192.168.1.10:9100 и 192.168.1.20:9100 на IP-адреса ваших устройств и порты, где запущены экспортеры.
Если у вас экспортер работает на самом телефоне, используйте 127.0.0.1 или localhost (но тогда Grafana будет видеть те же метрики только через Prometheus, как и задумано).
Запуск Prometheus
Перед запуском создайте папку для данных:
mkdir -p ~/monitoring/prometheus-dataЗапуск Prometheus:
~/monitoring/prometheus-bin/prometheus
--config.file ~/monitoring/config/prometheus.yml
--storage.tsdb.path ~/monitoring/prometheus-data
--web.listen-address 0.0.0.0:9090
--web.enable-lifecycleОткройте порт на устройстве в вашей локальной сети (убедитесь, что firewall/маршрутизация не блокируют). Для теста можно обратиться с другого устройства: http://IP_ТЕРМУКС:9090/.
Установка Grafana в Termux
Grafana — серверный веб-интерфейс. В зависимости от архитектуры мобильного устройства подход может отличаться. Более надёжный путь — использовать скачивание официального бинарника Grafana и запуск с конфигами под текущую среду.
Перейдите в каталог:
cd ~/monitoringСкачайте Grafana (пример версии):
wget https://dl.grafana.com/enterprise/release/grafana-11.3.0.linux-arm64.tar.gz -O grafana.tar.gz
tar -xzf grafana.tar.gz
mv grafana- grafana-bin
rm -f grafana.tar.gzПроверьте запуск:
~/monitoring/grafana-bin/bin/grafana-server --versionПодготовка конфигов и данных Grafana
Создайте каталоги для хранения и конфигурации (если их нет в поставке):
mkdir -p ~/monitoring/grafana-data
mkdir -p ~/monitoring/config/grafanaСкопируйте стандартный конфиг и отредактируйте при необходимости:
cp ~/monitoring/grafana-bin/conf/defaults.ini ~/monitoring/config/grafana/custom.iniОтредактируйте базовые параметры. Например:
nano ~/monitoring/config/grafana/custom.iniВставьте/измените ключевые поля:
[server]
http_addr = 0.0.0.0
http_port = 3000
domain = localhost
root_url = http://IP_ТЕРМУКС:3000/
serve_from_sub_path = false
[paths]
data = /data/data/com.termux/files/home/monitoring/grafana-dataСохраните изменения. Обратите внимание: путь в разделе [paths] может отличаться для вашего Termux-каталога. Используйте реальный путь вашего домашнего каталога, который обычно соответствует /data/data/com.termux/files/home.
Запуск Grafana
Запустите Grafana:
~/monitoring/grafana-bin/bin/grafana-server
--config ~/monitoring/config/grafana/custom.ini
--homepath ~/monitoring/grafana-binПроверьте веб-интерфейс: http://IP_ТЕРМУКС:3000.
Настройка Grafana: добавление Prometheus источника данных
Откройте Grafana в браузере и выполните шаги:
- Войдите (по умолчанию учётные данные зависят от версии; при необходимости сбросьте пароль средствами Grafana).
- Перейдите в Connections / Data sources (или Data sources).
- Нажмите Add data source → выберите Prometheus.
- URL: укажите
http://localhost:9090, если Grafana и Prometheus на одном Termux. - Нажмите Save & test.
Если Prometheus запущен на отдельном устройстве, укажите его IP: http://IP_PROM:9090.
Добавление панели (Dashboard) и запросов
Для начала используйте готовые панели или создайте свои:
- Выберите Dashboards → New (или Import).
- Укажите источник данных Prometheus.
- Используйте простые запросы для проверки, например: смотрите базовые метрики экспортеров (
up,process_*или метрики CPU/RAM — зависят от экспортера).
Если у вас экспортер на /metrics публикует метрики, в Prometheus можно быстро проверить: откройте http://IP_ТЕРМУКС:9090/targets и убедитесь, что UP — зеленый.
Организация распределённости: как добавить экспортеры на другие устройства
Распределённость достигается тем, что Prometheus (центральный сборщик) регулярно опрашивает экспортеры.
Практика:
- На устройствах-источниках запускайте экспортер (например, Node Exporter или Termux-экспортер).
- Убедитесь, что порт экспорта (часто 9100 или 9300) доступен с устройства, где работает Prometheus.
- В
prometheus.ymlдобавьте новые targets.
После изменений перезапустите Prometheus или используйте lifecycle (если включено). Для перезапуска проще всего остановить процесс и запустить снова.
Стабильность: энергосбережение, автозапуск и фоновые задачи
Мобильные устройства часто “убивают” фоновые процессы. Рекомендации для стабильной работы:
- В настройках Android добавьте Termux в исключения от энергосбережения.
- Используйте стабильную сеть Wi‑Fi.
- Держите Prometheus/Grafana в “активном” состоянии (или используйте планировщик/скрипты запуска, если ваша версия Termux и Android позволяют).
Если вам нужна схема “почти как сервер”: рассмотрим решение на базе внешнего мини-компьютера (или облака) и используем Termux только как экспортер/агент. Но если цель — именно запуск на телефоне, поможем подобрать конфигурацию.
Использование локальной VPN для создания LAN (опционально)
Если устройства находятся вне одного сегмента Wi‑Fi, но вы можете организовать локальную сеть через VPN, это может упростить доступ. Например, настроить такой VPN, чтобы устройства видели друг друга по IP (без попыток обхода блокировок). Далее Prometheus будет опрашивать экспортеры по этим IP.
В рамках статьи важно лишь соблюсти принцип: Prometheus должен видеть endpoint’ы по сети, а Grafana — обращаться к Prometheus.
Проверка работоспособности и типовые проблемы
Быстрые чек-листы:
- Prometheus targets: откройте
http://IP_ТЕРМУКС:9090/targetsи убедитесь, что статус UP. - Доступность экспорта: проверьте, что на стороне источника метрики открываются в браузере с компьютера в сети:
http://IP_источника:9100/metrics. - Порты: проверьте, что не занят порт и что процесс слушает на
0.0.0.0, а не только на127.0.0.1. - Архитектура бинарников: если Prometheus/Grafana не запускаются, возможно, скачан архив под другой CPU (armv7 vs arm64).
Заключение
Мы рассмотрели практический сценарий развёртывания распределённой системы мониторинга Prometheus + Grafana на мобильном устройстве под Termux: подготовили окружение, установили и запустили Prometheus и Grafana, настроили prometheus.yml, подключили источники данных в Grafana и объяснили, как подключать удалённые экспортеры через сеть. Такой подход хорошо подходит для полевых задач, лабораторных стендов и быстрых проверок состояния систем.
Хотите, чтобы система работала “как надо” в вашем конкретном сетевом окружении (автозапуск, стабильность, подбор архитектуры бинарников, шаблоны дашбордов и экспортеров)? Обращайтесь в РыбинскЛАБ: поможем спроектировать и внедрить мониторинг под ваши условия.