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

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

Мониторинг системных ресурсов Linux через Termux: сбор метрик, визуализация и алерты

Подробное руководство по мониторингу CPU, памяти, диска и сети в Linux через Termux: сбор метрик, построение графиков и настройка алертов.

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‑решениях, автоматизации и мобильных инструментах управления инфраструктурой. Свяжитесь с нами, и ваш мониторинг будет работать без сбоев, а вы получите полную картину состояния ваших систем в любой момент.

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

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

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

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