We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Развертывание распределённого мониторинга сети с помощью Prometheus, Grafana и node_exporter в Termux‑окружении

Распределённый мониторинг — это способ видеть состояние множества узлов и сегментов сети в одной системе. Для лабораторных задач, учебных стендов и компактных площадок часто удобно использовать 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_exporter

2) Загрузите 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 -m

3) Запустите 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 | head

5) Узнайте 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/prometheus

2) Создайте файл конфигурации 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'
YAML

3) (Опционально) Добавьте метки для удобства. Например, можно расширить конфигурацию, чтобы один 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'
YAML

4) Запустите Prometheus, указав файл конфигурации (примерный запуск):

./prometheus --config.file=./prometheus.yml

5) Проверьте в веб‑интерфейсе 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 | head

2) Если 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. Подход отлично подходит для лабораторных стендов и компактных инфраструктур, где требуется быстрый старт и единая панель наблюдения.

Если вы хотите ускорить развертывание, получить готовые конфигурации под вашу топологию, шаблоны дашбордов и консультации по устойчивой эксплуатации, обращайтесь в РыбинскЛАБ. Мы поможем спроектировать и внедрить решение мониторинга под ваши условия.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект