Termux — удобная среда для запуска утилит и сервисов прямо на Android. В этой статье мы разберём, как организовать мониторинг системных ресурсов и логов в реальном времени на устройстве под Termux, используя связку Prometheus (метрики), Grafana (дашборды) и Loki (логирование). Акцент сделаем на сборе данных и корректной настройке.
Материал ориентирован на аккуратные и легальные сценарии использования: локальный мониторинг своего устройства или своей лабораторной/домашней сети. Для доступа с других устройств при необходимости можно поднять VPN для создания локальной сети, но не использовать его для обхода блокировок.
Архитектура решения
Типовая схема в рамках локального окружения:
- Prometheus собирает метрики со “скрапаемых” источников (в нашем случае — из Termux/экспортера).
- Loki принимает логи (push через Promtail) и индексирует их для поиска.
- Grafana читает метрики из Prometheus и логи из Loki, строит графики и панели поиска.
Вариант для Termux может включать: все компоненты на одном устройстве или разнесение по узлам (например, Grafana на ПК, а сбор — на Android). Ниже показан практичный подход для старта: поднимаем сервисы на Termux, а Grafana при желании смотрим с ПК по сети.
Требования и подготовка
Проверьте базовые вещи:
- Termux установлен и обновлён.
- Есть доступ к сети (Wi‑Fi/мобильная связь).
- Достаточно места в хранилище (лог-данные могут расти).
- Понимание портов и доступа: по умолчанию Android может ограничивать входящие соединения без корректной сетевой настройки.
Начнём с подготовки пакетов. В Termux обновите систему и установите необходимые компоненты.
pkg update -y && pkg upgrade -ypkg install -y wget curl tar proot-distro net-toolsДальше нужны бинарники/сервисы. Наиболее стабильный путь для Prometheus/Loki/Grafana — запуск их как отдельные процессы из Termux. Для простоты в этой статье используется загрузка официальных сборок и запуск из окружения Termux.
Установка Prometheus, Loki и Grafana в Termux
Создадим рабочую директорию:
mkdir -p ~/monitoring/{prometheus,loki,grafana}Далее скачиваем и распаковываем архивы. Версии подбирайте актуальные на момент установки (в примерах ниже используются placeholders). Для надёжности ориентируйтесь на официальные релизы.
Prometheus
cd ~/monitoring/prometheuswget -O prometheus.tar.gz "https://github.com/prometheus/prometheus/releases/download/vX.Y.Z/prometheus-X.Y.Z.linux-arm64.tar.gz"tar -xzf prometheus.tar.gz --strip-components=1Loki
cd ~/monitoring/lokiwget -O loki.tar.gz "https://github.com/grafana/loki/releases/download/vA.B.C/loki-linux-arm64.zip"unzip loki.tar.gzЕсли у вас архив другого типа (tar.gz или zip), команда распаковки может отличаться.
Grafana
Grafana в Termux может быть менее удобной из‑за зависимостей, но возможно запустить как отдельный сервер. Практичнее в большинстве случаев держать Grafana на ПК и подключаться к Prometheus/Loki по сети. Если вы хотите именно в Termux — проверьте архитектуру и наличие подходящего бинарника/сборки.
Рекомендуемый подход: Grafana на ПК. В Termux поднимаем Prometheus и Loki, а Grafana используем как клиент.
Сбор метрик: exporter для системных ресурсов
Prometheus сам по себе не знает о системных метриках устройства. Нужен источник данных — exporter. Варианты зависят от доступности данных в Termux. На практике удобно использовать экспортёр, который умеет читать CPU/Memory/Disk и т.д.
В “быстрый старт” обычно включают:
- CPU, load, memory
- Диск/FS
- Сеть (rx/tx при наличии)
Если вы используете готовый экспортёр, действуйте по инструкции к нему. С точки зрения конфигурации Prometheus вам нужен endpoint вида http://<host>:<port>/metrics.
В качестве примера рассмотрим ситуацию, когда у вас уже есть exporter и он слушает порт 9100 и выдаёт метрики на /metrics. Если вам нужен конкретный exporter (например, node_exporter или аналог под Android/arm64), сообщите модель устройства и архитектуру — подберу наиболее подходящий вариант.
Настройка Prometheus
Создадим конфигурацию Prometheus. В Termux:
mkdir -p ~/monitoring/prometheus/confignano ~/monitoring/prometheus/config/prometheus.ymlПример минимального файла:
global:
scrape_interval: 5s
evaluation_interval: 5s
scrape_configs:
- job_name: 'termux_exporter'
metrics_path: /metrics
static_configs:
- targets: ['127.0.0.1:9100']Если exporter слушает не на loopback, замените 127.0.0.1 на IP устройства в вашей сети (или настройте доступность через VPN для создания локальной сети).
Запуск Prometheus:
cd ~/monitoring/prometheus./prometheus --config.file=~/monitoring/prometheus/config/prometheus.yml --storage.tsdb.path=~/monitoring/prometheus/data --web.listen-address=0.0.0.0:9090Проверьте доступность изнутри:
curl -s http://127.0.0.1:9090/-/healthyЕсли возвращается null или страница “healthy” — сервис поднят.
Сбор логов: Promtail → Loki
Для Loki нужен агент, который будет отправлять логи. Обычно это Promtail. Promtail читает файлы логов и пушит их в Loki.
Установим Promtail. Скачивание зависит от типа архива. Подход аналогичен Prometheus:
cd ~/monitoring/lokiwget -O promtail.tar.gz "https://github.com/grafana/loki/releases/download/vA.B.C/promtail-linux-arm64.zip"unzip promtail.tar.gzСоздадим конфиг Promtail:
mkdir -p ~/monitoring/loki/confignano ~/monitoring/loki/config/promtail.ymlПример настройки для логов Termux. Важно: путь к логам выбирайте под ваш сценарий (например, системные логи приложения или лог-файлы ваших сервисов). В Termux обычно удобнее складывать логи ваших команд/сервисов в файлы.
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /data/positions.yaml
clients:
- url: http://127.0.0.1:3100/loki/api/v1/push
scrape_configs:
- job_name: termux_logs
static_configs:
- targets:
- localhost
labels:
job: termux
path: /sdcard/termux-logs/.logОбратите внимание:
/sdcard/termux-logs/.log— пример. Создайте папку и пишите туда логи.positions.filename— хранит позицию чтения. Для Android лучше иметь путь, доступный по записи.
Создадим папку для логов и тестовый файл:
mkdir -p /sdcard/termux-logstouch /sdcard/termux-logs/test.logНастройка Loki
Создадим конфиг Loki:
nano ~/monitoring/loki/config/loki.ymlМинимальный пример (для старта, локально):
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /data/loki
storage:
filesystem:
chunks_directory: /data/loki/chunks
rules_directory: /data/loki/rules
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
limits_config:
retention_period: 168hЗапуск Loki:
cd ~/monitoring/loki./loki -config.file=~/monitoring/loki/config/loki.ymlПроверка здоровья:
curl -s http://127.0.0.1:3100/readyЗапуск Promtail:
./promtail -config.file=~/monitoring/loki/config/promtail.ymlПроверка работы: “живые” метрики и “живые” логи
Чтобы убедиться, что сбор логов работает, в отдельном окне Termux пишите в файл:
while true; do date >> /sdcard/termux-logs/test.log; echo "cpu_check=$(date)" >> /sdcard/termux-logs/test.log; sleep 3; doneДля проверки метрик откройте страницу Prometheus:
http://<ip_устройства>:9090
И выполните query в разделе Graphs. Если экспортёр отдаёт метрики, появятся временные ряды.
Подключение Grafana и создание панелей
Если Grafana на ПК, добавьте источники:
- Prometheus: URL вида
http://<ip_устройства>:9090 - Loki: URL вида
http://<ip_устройства>:3100
Далее создайте:
- Панель “CPU usage” (Prometheus): выберите метрику из вашего exporter и задайте диапазон.
- Панель “Logs” (Loki): задайте запрос в стиле
{job="termux"}и добавьте фильтры по тексту при необходимости.
Чтобы запросы работали, убедитесь, что лейблы в Promtail совпадают: в примере это job: termux.
Эксплуатационные моменты для Termux
1) Автозапуск и сессии
Termux может завершать процессы при уходе в фон, зависит от настроек и Android-ограничений. Для лабораторных задач используйте удержание сессии и тщательно проверяйте поведение при блокировке экрана. Если выстроите автозапуск — делайте это через штатные средства Termux/Android и тестируйте жизненный цикл.
2) Хранилище и рост данных
Loki по умолчанию может накапливать данные. В конфиге используйте retention_period (в примере 168h). Промежуток выбирайте под задачу.
3) Сеть и порты
Для доступа с ПК откройте только нужные порты. В Android это может требовать дополнительных действий. Если вы хотите безопаснее управлять доступом, используйте VPN для создания локальной сети и ограничивайте доступ в рамках подсети.
4) Синхронизация времени
Для корректного поиска по логам и сопоставления событий важно, чтобы время на устройстве было близко к реальному. Обычно Android поддерживает время через сеть.
Тюнинг: что улучшить после “первых данных”
Когда система уже собирает данные, обычно требуется:
- Увеличить/уменьшить
scrape_intervalпод нагрузку. - Добавить больше источников метрик (несколько jobs в
prometheus.yml). - Настроить парсинг логов (если требуется выделение полей) — это зависит от того, как вы пишете логи.
- Оптимизировать запросы Grafana/Loki, чтобы они возвращали данные быстро (особенно на слабых устройствах).
Заключение
Мы настроили локальный сбор и визуализацию мониторинга в Termux: Prometheus для метрик (через exporter), Loki для логов (через Promtail) и Grafana для анализа и дашбордов. Дальнейшие шаги — тюнинг частоты сбора, управление ретеншеном, корректная организация логов в файлы и обеспечение стабильного сетевого доступа в вашей локальной среде.
Если нужно собрать решение “под ключ”, подобрать совместимые версии под архитектуру Android и обеспечить стабильность в вашем сценарии — обращайтесь в РыбинскЛАБ. Мы поможем спроектировать мониторинг, подготовить конфигурации и провести настройку и тестирование.