Termux – это полноценный терминал Linux для Android, который позволяет запускать привычные утилиты, писать скрипты и взаимодействовать с API операционной системы. В статье мы рассмотрим, как превратить ваш смартфон в полноценный агент мониторинга, собирающий метрики производительности и передающий их в популярные системы наблюдения.
Почему Termux – идеальная платформа для мониторинга
Termux работает в пользовательском пространстве, не требуя root‑прав, но при этом имеет доступ к большинству системных файлов через /proc и /sys. Это делает его безопасным и гибким решением для:
- Сбора метрик CPU, памяти, диска и сети в реальном времени.
- Запуска пользовательских скриптов на Python, Bash, Perl и др.
- Отправки данных в удалённые хранилища (InfluxDB, Prometheus, Elasticsearch).
- Интеграции с контейнерными решениями (Docker‑like окружение в Termux).
Популярные системы мониторинга, совместимые с Android
- htop – интерактивный просмотр нагрузки CPU и памяти.
- top – базовый монитор в реальном времени.
- sysstat (iostat, mpstat) – детализированные статистики ввода‑вывода.
- adb shell dumpsys – доступ к системным сервисам Android.
- Perf – профилирование ядра и пользовательского кода.
- Netdata – локальная визуализация, умеет экспортировать в InfluxDB/Prometheus.
- Prometheus node_exporter – лёгкий экспортёр метрик.
- InfluxDB Telegraf – агент, собирающий данные через плагины.
Установка необходимых пакетов в Termux
pkg update && pkg upgrade
pkg install htop sysstat python git curl
pip install --upgrade pip
pip install influxdb-client prometheus-client
# При желании установить node_exporter (сборка из исходников)
После установки у вас будет готовый набор утилит для сбора базовых метрик и возможности отправлять их в внешние системы.
Сбор метрик с помощью встроенных утилит
Для большинства задач достаточно использовать стандартные команды Linux:
top -b -n 1– однократный вывод полной таблицы процессов.htop -b -n 1– аналог в парсируемом формате.iostat -dx 1 5– статистика дисковых операций.mpstat -P ALL 1 5– нагрузка на каждый ядро.cat /proc/meminfo– детальная информация о памяти.cat /proc/net/dev– сетевой трафик.
Эти команды можно объединить в Bash‑скрипт, который будет формировать JSON‑сообщения для дальнейшей отправки.
Экспорт данных в InfluxDB
Ниже пример простого Python‑скрипта, отправляющего метрики CPU и памяти в InfluxDB. Скрипт можно запускать по расписанию.
# export_influx.py
import time, json, subprocess
from influxdb_client import InfluxDBClient, Point, WriteOptions
# Параметры подключения (замените на свои)
url = "http://192.168.1.100:8086"
token = "my-token"
org = "my-org"
bucket = "android_metrics"
client = InfluxDBClient(url=url, token=token, org=org)
write_api = client.write_api(write_options=WriteOptions(batch_size=1))
def get_cpu():
out = subprocess.check_output(["top", "-b", "-n", "1"]).decode()
for line in out.splitlines():
if "Cpu(s):" in line:
# Пример: Cpu(s): 12.3%us, 3.4%sy, 0.0%ni, 82.5%id, ...
parts = line.split(',')
usage = 100 - float(parts[3].split('%')[0].strip())
return usage
return 0.0
def get_mem():
out = subprocess.check_output(["cat", "/proc/meminfo"]).decode()
mem_total = mem_free = 0
for line in out.splitlines():
if line.startswith('MemTotal'):
mem_total = int(line.split()[1])
if line.startswith('MemAvailable'):
mem_free = int(line.split()[1])
used = mem_total - mem_free
return used / mem_total 100
while True:
cpu = get_cpu()
mem = get_mem()
point = Point("android_performance")\
.field("cpu_usage", cpu)\
.field("mem_usage", mem)\
.time(int(time.time()1e9))
write_api.write(bucket=bucket, org=org, record=point)
time.sleep(30) # интервал отправки
Скрипт работает в бесконечном цикле, отправляя данные каждые 30 секунд. Для фонового запуска используйте nohup или Termux‑Scheduler.
Интеграция с Prometheus через node_exporter
Если ваша инфраструктура построена на Prometheus, рекомендуется собрать node_exporter в Termux. Процесс установки:
# Скачивание последней версии (пример для arm64)
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-arm64.tar.gz
tar -xzf node_exporter-1.7.0.linux-arm64.tar.gz
cd node_exporter-1.7.0.linux-arm64
# Запуск в фоне
./node_exporter &
# Проверка доступности
curl http://127.0.0.1:9100/metrics | head
Prometheus может скрапать метрики по адресу http://device_ip:9100/metrics. При необходимости ограничьте доступ с помощью iptables или VPN.
Автоматизация с помощью Termux‑Scheduler (cron‑подобный планировщик)
Termux предоставляет встроенный планировщик termux-scheduler, аналогичный cron. Пример создания задачи, запускающей скрипт каждые 5 минут:
termux-scheduler --add --interval 300 --command "python /data/data/com.termux/files/home/export_influx.py"
# Список задач
termux-scheduler --list
Для более гибкого управления можно использовать обычный crontab после установки пакета cronie:
pkg install cronie
crontab -e
# Добавьте строку
/5 python /data/data/com.termux/files/home/export_influx.py
Практический пример: мониторинг CPU, памяти и сетевого трафика
Объединим всё в один Bash‑скрипт, который собирает три метрики и отправляет их в InfluxDB через HTTP‑API (без клиента Python). Такой подход удобен, если на устройстве нет Python.
# monitor.sh
#!/data/data/com.termux/files/usr/bin/bash
INFLUX_URL="http://192.168.1.100:8086/api/v2/write?org=my-org&bucket=android_metrics&precision=s"
TOKEN="my-token"
while true; do
# CPU usage (idle % -> usage)
CPU_IDLE=$(top -b -n1 | grep 'Cpu(s):' | awk -F',' '{print $4}' | awk '{print $1}' | tr -d '%')
CPU_USAGE=$(echo "100 - $CPU_IDLE" | bc)
# Memory usage
MEM_TOTAL=$(grep MemTotal /proc/meminfo | awk '{print $2}')
MEM_AVAIL=$(grep MemAvailable /proc/meminfo | awk '{print $2}')
MEM_USAGE=$(echo "scale=2; (1-($MEM_AVAIL/$MEM_TOTAL))100" | bc)
# Network traffic (bytes received on wlan0)
RX_BYTES=$(cat /sys/class/net/wlan0/statistics/rx_bytes)
TX_BYTES=$(cat /sys/class/net/wlan0/statistics/tx_bytes)
# Формируем line protocol
DATA="android_perf cpu_usage=$CPU_USAGE,mem_usage=$MEM_USAGE,wifi_rx=$RX_BYTES,wifi_tx=$TX_BYTES $(date +%s)"
# Отправляем
curl -i -XPOST "$INFLUX_URL" \
-H "Authorization: Token $TOKEN" \
-H "Content-Type: text/plain; charset=utf-8" \
--data-binary "$DATA"
sleep 60
done
Сделайте скрипт исполняемым (chmod +x monitor.sh) и запустите его в фоне (nohup ./monitor.sh &) или добавьте в планировщик.
Заключение
Termux предоставляет всё необходимое для построения собственного агента мониторинга на Android‑устройстве без рут‑прав. С помощью стандартных Linux‑утилит, Python‑скриптов и лёгких экспортёров (node_exporter, Telegraf) можно собрать детальные метрики CPU, памяти, диска и сети, а затем передать их в InfluxDB, Prometheus или любую другую систему визуализации.
Если вам требуется профессиональная настройка мониторинга, интеграция с корпоративными системами или разработка кастомных решений под Android, обращайтесь – профессиональные IT‑услуги в Рыбинске оказывает RybinskLab.