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

Termux – это мощный эмулятор терминала для Android, предоставляющий полноценную Linux‑окружение. С его помощью можно разрабатывать и запускать скрипты, управлять пакетами и даже создавать интерактивные дашборды для мониторинга системных журналов в реальном времени. В этой статье мы рассмотрим, как собрать такой дашборд, используя комбинацию tmux, journalctl, multitail и небольших Bash‑скриптов.

Что понадобится

  • Устройство Android с установленным Termux (рекомендована версия 0.118+).
  • Базовые знания Bash и работы с Linux‑журналами.
  • Пакеты: tmux, procps, util-linux, multitail, jq (по желанию для парсинга JSON‑логов).

Установка необходимых пакетов

pkg update && pkg upgrade -y
pkg install tmux procps util-linux multitail jq -y

После установки убедитесь, что все утилиты доступны:

which tmux && which journalctl && which multitail

Создание базового скрипта дашборда

Мы будем использовать tmux для разделения окна терминала на несколько панелей, каждая из которых будет отображать определённый поток журналов.

Шаг 1 – Инициализация сессии tmux

#!/usr/bin/env bash
SESSION="log_dashboard"
# Если сессия уже существует – присоединяемся
if tmux has-session -t $SESSION 2>/dev/null; then
  tmux attach -t $SESSION
  exit 0
fi
# Создаём новую сессию
tmux new-session -d -s $SESSION -n "Main"
# Разделяем окно на 3 вертикальные панели
tmux split-window -h -t $SESSION:0
tmux split-window -v -t $SESSION:0.1
# Запускаем мониторинг в каждой панели
# 1️⃣ Системные сообщения (priority=3)
 tmux send-keys -t $SESSION:0.0 "journalctl -f -p 3" C-m
# 2️⃣ Ошибки ядра
 tmux send-keys -t $SESSION:0.1 "journalctl -f -k" C-m
# 3️⃣ Пользовательские логи (например, nginx)
 tmux send-keys -t $SESSION:0.2 "journalctl -f -u nginx" C-m
# Подключаемся к сессии
 tmux attach -t $SESSION

Сохраните файл, например, как dashboard.sh, сделайте его исполняемым (chmod +x dashboard.sh) и запустите.

Шаг 2 – Улучшение визуализации с multitail

Для более гибкого отображения можно заменить journalctl -f на multitail, который поддерживает подсветку, фильтрацию и объединение нескольких потоков в одной панели.

# Пример использования multitail для объединения системных и kernel‑логов
multitail -c -I /var/log/syslog -I /var/log/kern.log \
    -ci "Syslog" -ci "Kernel"
# В tmux‑панели
 tmux send-keys -t $SESSION:0.0 "multitail -c -I /var/log/syslog -I /var/log/kern.log" C-m

Шаг 3 – Автоматическое обновление конфигурации

Если в системе появляются новые сервисы, их логи можно добавить в дашборд без перезапуска. Для этого создадим небольшую функцию, которая будет перечитывать список сервисов каждые 60 секунд.

update_panels() {
  local services=$(systemctl list-units --type=service --state=running --no-legend | awk '{print $1}')
  local idx=0
  for svc in $services; do
    # Добавляем новую панель, если её ещё нет
    if ! tmux list-panes -t $SESSION | grep -q "$svc"; then
      tmux split-window -v -t $SESSION:0.$idx
      tmux send-keys -t $SESSION:0.$idx "journalctl -f -u $svc" C-m
    fi
    idx=$((idx+1))
  done
}
# Запускаем в фоне
while true; do
  update_panels
  sleep 60
done &

Эта «мульти‑watch»‑логика позволяет дашборду оставаться актуальным даже в динамично меняющейся инфраструктуре.

Оптимизация работы в Termux

  • Уменьшение нагрузки: используйте journalctl --since "5 minutes ago" вместо бесконечного -f, если вам нужны только последние записи.
  • Сохранение истории: перенаправляйте вывод в файлы ~/logs/*.log для последующего анализа.
  • Цветовая схема: в tmux задайте set -g default-terminal "screen-256color", а в multitail используйте параметры -c и -ci для подсветки.

Запуск дашборда при старте Termux

Для автоматического старта добавьте строку в файл ~/.bashrc:

if [ -z "$TMUX" ]; then
  ~/dashboard.sh &
fi

Теперь при открытии Termux дашборд будет запущен в отдельной tmux‑сессии.

Заключение

Создание терминального дашборда в Termux – эффективный способ получать актуальную информацию о состоянии Linux‑системы прямо на мобильном устройстве. Комбинация tmux, journalctl и multitail обеспечивает гибкость, масштабируемость и визуальную наглядность.

Если вам требуется более сложная аналитика, интеграция с внешними системами (ELK, Grafana) или индивидуальная настройка под ваши бизнес‑процессы, команда RybinskLab готова предложить профессиональные услуги: разработка кастомных мониторинговых решений, аудит безопасности, обучение работе с Termux и Linux‑инструментами. Свяжитесь с нами, и мы поможем вывести ваш мониторинг на новый уровень.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом РыбинскЛАБ.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю ИТ-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса. Запомните информация развлекательный ознакомительный носит, не нарушайте закон!

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