Распределённый мониторинг — это способ видеть состояние множества узлов и сегментов сети в одной системе. Для лабораторных задач, учебных стендов и компактных площадок часто удобно использовать Termux: он позволяет развернуть агент мониторинга на Android‑устройстве и собрать метрики в центральную панель.
В этой статье рассмотрим схему: node_exporter на нескольких узлах (в Termux‑окружении) → Prometheus как сервер сбора и хранения → Grafana для визуализации. Подход применим и для небольшой “локальной сети” (например, вашей внутренней лаборатории), где устройства имеют сетевую связность между собой.
Целевая архитектура
Мы будем придерживаться классической схемы:
- Узлы (агенты): Termux → node_exporter → отдаёт метрики по HTTP (обычно на порту 9100).
- Сервер сбора: Prometheus → по расписанию опрашивает endpoints узлов и хранит время‑ряды.
- Визуализация: Grafana → строит дашборды на основе данных Prometheus.
Важно: в контексте законодательства РФ и практики ИБ не будем использовать VPN для обхода ограничений. При необходимости VPN применяется только для создания локальной сети между узлами внутри вашей инфраструктуры.
Подготовка окружения и требования
Перед началом убедитесь:
- Устройства, где работает Termux (агенты), находятся в одной локальной сети (или соединены через локальную VPN‑сеть, если она нужна для вашей топологии).
- Существует сетевой маршрут от машины с Prometheus до IP‑адресов узлов с node_exporter.
- На стороне Prometheus и Grafana есть доступ к их веб‑интерфейсам из вашей лабораторной сети.
Технически node_exporter запускается как бинарь. В Termux удобнее всего использовать переносимые сборки и запускать их в фоне.
Установка Termux‑зависимостей
На узле‑агенте откройте Termux и подготовьте базовые пакеты:
pkg update
pkg upgrade -y
pkg install -y wget tar proot-tool proot-distroДальше доступные варианты зависят от выбранного способа запуска node_exporter. На практике чаще всего используется прямой запуск подготовленного бинаря node_exporter (для Android/Termux) или запуск в совместимом контейнерном окружении. Ниже приведён “практичный” вариант: загрузка бинаря и запуск как пользовательского процесса.
Развёртывание node_exporter в Termux
1) Создайте каталог под мониторинг:
mkdir -p $HOME/monitoring/node_exporter
cd $HOME/monitoring/node_exporter2) Загрузите node_exporter. Ссылка зависит от версии и архитектуры. Для примера используем переменную версии (вам нужно подставить корректную версию и бинарь под вашу платформу):
NEXP_VERSION="1.8.1"
# Пример: скачайте соответствующий бинарь для вашей платформы (arm64/aarch64 и т.п.)
wget -O node_exporter.tar.gz "https://github.com/prometheus/node_exporter/releases/download/v${NEXP_VERSION}/node_exporter-${NEXP_VERSION}.linux-arm64.tar.gz"
tar -xzf node_exporter.tar.gz
chmod +x ./node_exporter/node_exporterЕсли вы не уверены в выборе бинаря под архитектуру Android, лучше заранее определить архитектуру:
uname -m3) Запустите node_exporter и закрепите порт (по умолчанию 9100). В лабораторной сети откройте доступ к порту для Prometheus:
./node_exporter/node_exporter --web.listen-address="0.0.0.0:9100"Чтобы процесс не терялся при закрытии сессии, используйте поддерживаемый вами способ “фонового” запуска (например, средствами Termux/системы). В простом варианте можно запустить через nohup:
nohup ./node_exporter*/node_exporter --web.listen-address="0.0.0.0:9100" &4) Проверьте, что метрики доступны локально (на самом агенте):
curl -s http://127.0.0.1:9100/metrics | head5) Узнайте IP‑адрес узла в локальной сети. Для Prometheus это ключевой параметр. Например:
ip addr | head -n 50Запишите IP, который виден из сети Prometheus.
Организация распределённости: несколько узлов
Повторите установку и запуск node_exporter для каждого Android‑узла‑агента. На стороне Prometheus вы добавите несколько targets, каждый со своим IP‑адресом.
Рекомендуемая практика — использовать понятные идентификаторы. Например, метки (labels) device, location, role.
Установка и настройка Prometheus
На сервере, где будет Prometheus, создайте рабочую директорию и конфигурацию. Пример ниже отражает идею; конкретные команды установки зависят от ОС сервера.
1) Создайте директорию конфигурации:
mkdir -p $HOME/prometheus
cd $HOME/prometheus2) Создайте файл конфигурации prometheus.yml. Пример для нескольких агентов:
cat > prometheus.yml <<'YAML'
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'termux-node-exporters'
metrics_path: /metrics
static_configs:
- targets:
- '192.168.1.101:9100'
- '192.168.1.102:9100'
- '192.168.1.103:9100'
YAML3) (Опционально) Добавьте метки для удобства. Например, можно расширить конфигурацию, чтобы один target соответствовал “устройству A”. Пример:
cat > prometheus.yml <<'YAML'
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'termux-node-exporters'
metrics_path: /metrics
static_configs:
- targets: ['192.168.1.101:9100']
labels:
device: 'android-1'
role: 'agent'
- targets: ['192.168.1.102:9100']
labels:
device: 'android-2'
role: 'agent'
- targets: ['192.168.1.103:9100']
labels:
device: 'android-3'
role: 'agent'
YAML4) Запустите Prometheus, указав файл конфигурации (примерный запуск):
./prometheus --config.file=./prometheus.yml5) Проверьте в веб‑интерфейсе Prometheus (обычно http://<host>:9090) вкладки “Status → Targets”. Убедитесь, что все targets имеют состояние “UP”.
Установка и настройка Grafana
Grafana будет использовать Prometheus как источник данных.
1) Запустите Grafana (способ зависит от ОС). После запуска откройте веб‑интерфейс (обычно http://<host>:3000).
2) Добавьте источник данных:
- “Connections” → “Data sources” → “Add data source”
- Выберите тип Prometheus
- Укажите URL сервера Prometheus, например:
http://localhost:9090илиhttp://<prometheus-host>:9090
3) Сохраните настройки и проверьте подключение.
4) Создайте дашборд. В простейшем случае используйте встроенный интерфейс “Explore” и запросы к метрикам. Далее оформите дашборд под вашу лабораторию.
Пример дашбордов: что смотреть
node_exporter предоставляет стандартные наборы метрик (в зависимости от среды). В Termux набор может быть ограничен особенностями Android/Kernel/доступностью системных интерфейсов. Тем не менее типично полезны:
- Загрузка и производительность (процессорные метрики, контекстные переключения — в зависимости от доступности).
- Сеть (количество пакетов/байт — где доступно).
- Файловая система и диск (где возможно корректное определение FS‑метрик).
- Метрики по устройству и времени (если экспортируются).
Пример: в “Explore” вы можете начать с общего списка метрик и выбрать то, что “приходит” от ваших targets.
Проверка метрик и типовые проблемы
1) Убедитесь, что агент доступен с сервера Prometheus: с сервера выполните проверку доступности порта (например, curl или nc, если они доступны).
curl -s http://192.168.1.101:9100/metrics | head2) Если targets “DOWN”, проверьте:
- Запущен ли node_exporter и не завершился ли процесс.
- Слушает ли node_exporter адрес
0.0.0.0(не только127.0.0.1). - Открыт ли маршрут между устройствами в вашей локальной сети.
3) Если метрик “мало”, это может быть нормой: Android‑среда отличается от стандартной Linux. Лабораторный характер стенда важен: вы мониторите то, что реально отдаёт агент.
Рекомендации по эксплуатации
Для устойчивой работы распределённого мониторинга в Termux рекомендуются следующие практики:
- Контроль процессов: убедитесь, что node_exporter автоматически поднимается после перезапусков. В зависимости от устройства и политики Android может потребоваться планировщик или настройка автозапуска.
- Обновления: версионируйте node_exporter и отслеживайте совместимость метрик с вашими дашбордами.
- Сетевые лимиты: учитывайте, что мобильные устройства могут менять адреса. Желательно использовать DHCP‑резервации или фиксировать адреса в вашей локальной инфраструктуре.
- Логи: направляйте вывод node_exporter в файл (при необходимости), чтобы быстро диагностировать ошибки.
Требования по безопасности и правовая корректность
При развёртывании мониторинга соблюдайте базовые меры безопасности:
- Ограничьте доступ к веб‑интерфейсам Prometheus и Grafana только доверенной локальной сетью.
- Не публикуйте мониторинг в публичный интернет без согласованных мер защиты.
- Не используйте VPN для обхода блокировок; VPN допускается только для построения локальной сети между узлами в рамках вашей инфраструктуры.
Также важно использовать мониторинг исключительно для легитимных задач внутри вашей организации/лаборатории и не нарушать политики доступа к системам.
Заключение
Мы рассмотрели, как организовать распределённый мониторинг сети с помощью node_exporter в Termux на нескольких Android‑узлах, централизовать сбор метрик в Prometheus и визуализировать данные в Grafana. Подход отлично подходит для лабораторных стендов и компактных инфраструктур, где требуется быстрый старт и единая панель наблюдения.
Если вы хотите ускорить развертывание, получить готовые конфигурации под вашу топологию, шаблоны дашбордов и консультации по устойчивой эксплуатации, обращайтесь в РыбинскЛАБ. Мы поможем спроектировать и внедрить решение мониторинга под ваши условия.