Termux превращает ваш Android‑устройство в полноценный Linux‑терминал. Это открывает возможности для администрирования серверов, разработки и, что особенно интересно, для мониторинга системных ресурсов удалённых Linux‑машин прямо со смартфона.
Что понадобится
- Установленный Termux (версии 0.118+).
- Доступ к целевой Linux‑системе по SSH.
- Базовые утилиты:
htop,glances,python,pip,termux-apiиtermux-notification. - Опционально:
gnuplotилиmatplotlibдля построения графиков.
Установка необходимых пакетов
Запустите Termux и выполните:
pkg update && pkg upgrade -y
pkg install -y htop glances python python-pip termux-api termux-notification termux-plot
pip install --upgrade pip
pip install matplotlib pandas
Эти команды установят интерактивные мониторы, Python‑окружение и инструменты для визуализации.
Сбор базовых метрик
Самый простой способ – использовать glances в режиме сервера. На удалённой Linux‑машине запустите:
ssh user@remote "glances -w --export-influxdb &"
Опция -w открывает веб‑интерфейс, а --export-influxdb позволяет отсылать метрики в InfluxDB (можно установить локально в Termux).
Для одноразового получения статистики удобно использовать команды из /proc:
ssh user@remote "cat /proc/cpuinfo | grep 'cpu MHz'"
ssh user@remote "free -m"
ssh user@remote "df -h /"
ssh user@remote "cat /proc/net/dev"
Автоматический сбор данных
Создадим небольшую Python‑утилиту, которая будет опрашивать удалённый сервер, сохранять данные в CSV и генерировать графики.
#!/usr/bin/env python3
import subprocess, csv, datetime, os
HOST = "user@remote"
INTERVAL = 60 # секунд
OUTPUT_DIR = "/data/data/com.termux/files/home/monitor"
os.makedirs(OUTPUT_DIR, exist_ok=True)
def run(cmd):
result = subprocess.run(["ssh", HOST, cmd], capture_output=True, text=True)
return result.stdout.strip()
def collect():
ts = datetime.datetime.now().isoformat()
cpu = run("awk '/cpu MHz/ {print $4}' /proc/cpuinfo | paste -sd+ - | bc")
mem = run("free -m | awk '/Mem:/ {print $3}'")
disk = run("df -h / | awk 'NR==2 {print $5}'")
net = run("cat /proc/net/dev | awk '/eth0/ {print $2+$10}'")
return [ts, cpu, mem, disk, net]
csv_path = os.path.join(OUTPUT_DIR, "metrics.csv")
with open(csv_path, "a", newline="") as f:
writer = csv.writer(f)
writer.writerow(collect())
print(f"Metrics saved to {csv_path}")
Скрипт можно добавить в планировщик crontab Termux (пакет termux-cron):
pkg install -y termux-cron
termux-cron
После установки откройте crontab -e и добавьте строку:
/5 * /data/data/com.termux/files/home/monitor/collect.py
Это будет собирать метрики каждые 5 минут.
Визуализация в Termux
Для быстрого построения графика используем termux-plot:
csvtool col 2,3,4,5 /data/data/com.termux/files/home/monitor/metrics.csv | tail -n +2 > /data/data/com.termux/files/home/monitor/tmp.txt
termux-plot -t "CPU (MHz)" -x "Time" -y "Value" -l "CPU" -l "Memory" -l "Disk" -l "Network" -f /data/data/com.termux/files/home/monitor/tmp.txt
Для более продвинутой визуализации можно воспользоваться matplotlib:
#!/usr/bin/env python3
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('/data/data/com.termux/files/home/monitor/metrics.csv',
names=['timestamp','cpu','mem','disk','net'],
parse_dates=['timestamp'])
plt.figure(figsize=(10,6))
plt.plot(df['timestamp'], df['cpu'], label='CPU MHz')
plt.plot(df['timestamp'], df['mem'], label='Memory MB')
plt.legend()
plt.title('Системные метрики')
plt.xlabel('Время')
plt.ylabel('Значения')
plt.grid(True)
plt.tight_layout()
plt.savefig('/data/data/com.termux/files/home/monitor/metrics.png')
print('График сохранён в metrics.png')
Полученный PNG‑файл можно открыть в любой графической галерее Android‑устройства.
Настройка алертов
Самый удобный способ – использовать termux-notification в сочетании с простыми условиями в скрипте.
# Добавьте в collect.py после записи CSV
THRESHOLD_CPU=3000 # MHz
THRESHOLD_MEM=800 # MB
if float(cpu) > THRESHOLD_CPU:
subprocess.run(["termux-notification", "--title", "⚠️ CPU overload", "--content", f"CPU usage {cpu} MHz"])
if int(mem) > THRESHOLD_MEM:
subprocess.run(["termux-notification", "--title", "⚠️ Memory usage", "--content", f"Memory used {mem} MB"])
Для более гибкой интеграции можно отправлять сообщения в Telegram через Bot API:
TELEGRAM_TOKEN="123456:ABCDEF..."
CHAT_ID="987654321"
msg="⚠️ High CPU: ${cpu} MHz"
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage" \
-d chat_id=${CHAT_ID} -d text="${msg}"
Продвинутый стек: InfluxDB + Grafana в Termux
Если требуется хранить метрики длительный период и строить сложные дашборды, можно развернуть лёгкую InfluxDB‑instance в Termux и подключить к ней Grafana (Docker‑контейнеры работают через proot-distro).
# Установка InfluxDB (через proot-distro)
proot-distro install debian
proot-distro login debian
apt update && apt install -y influxdb
systemctl start influxdb
# В Grafana (устанавливается в том же контейнере)
apt install -y grafana
systemctl start grafana-server
После этого в Grafana создаём источник данных InfluxDB, добавляем панель с запросами SELECT mean("value") FROM "cpu" WHERE time > now() - 1h GROUP BY time(1m) и получаем живой график прямо на смартфоне через браузер.
Заключение
Termux предоставляет мощный набор инструментов для мониторинга Linux‑серверов: от лёгких CLI‑утилит (htop, glances) до полной системы сбора, визуализации и алертинга с помощью Python, InfluxDB и Grafana. Используя возможности termux-api, вы получаете мгновенные уведомления на мобильном устройстве, а гибкость скриптов позволяет адаптировать процесс под любые бизнес‑требования.
Если вам нужен профессиональный аудит производительности, настройка постоянного мониторинга или разработка кастомных дашбордов – команда RybinskLab готова помочь. Мы специализируемся на DevOps‑решениях, автоматизации и мобильных инструментах управления инфраструктурой. Свяжитесь с нами, и ваш мониторинг будет работать без сбоев, а вы получите полную картину состояния ваших систем в любой момент.