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

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

Автоматический сбор и анализ логов приложений через ELK‑стек в Termux: настройка Filebeat, Logstash и Kibana на мобильном устройстве

Пошаговое руководство по сбору и анализу логов из Termux с помощью Filebeat, Logstash и Kibana: архитектура, настройка, безопасные практики и примеры для мобильного ELK‑подхода.

Логи — это основной источник информации о том, что происходит с приложениями и сервисами. Даже на мобильном устройстве можно организовать полноценный контур «сбор → обработка → визуализация» с ELK‑стеком, если правильно настроить сборщик (Filebeat), обработчик (Logstash) и интерфейс аналитики (Kibana). В этой статье рассмотрим практический, безопасный и реалистичный подход к автоматическому сбору логов приложений из Termux, их маршрутизации в Logstash и последующей визуализации в Kibana.

Целевая архитектура: как все работает

Схема выглядит так:

  • Termux формирует и/или хранит лог-файлы (например, логи приложений, системные логи Termux, логи ваших скриптов).
  • Filebeat читает указанные файлы, нормализует события и отправляет их в Logstash по сети.
  • Logstash принимает события, при необходимости обогащает их, нормализует поля (grok/mutate), и отправляет в Elasticsearch.
  • Kibana строит запросы, дашборды, визуализации и алерты по данным из Elasticsearch.

Такой подход позволяет держать логи «живыми»: как только в файлах появляется новая запись, Filebeat отправляет ее в ELK без ручных действий.

Требования и подготовка

Ниже перечислены типовые требования. Конкретные версии можно подобрать под вашу инфраструктуру.

  • Termux (рекомендуется актуальная версия приложения).
  • Filebeat на Android через путь: либо совместимый пакет/бинарник (если вы используете сборку под ARM), либо запуск в контейнерной среде (при наличии подходящего окружения). На практике чаще используют второй вариант — запуск в среде, где обеспечивается совместимость.
  • Logstash, Elasticsearch, Kibana — на сервере/ПК в вашей локальной сети или в облаке (для мобильного устройства важна доступность по сети).
  • Сеть: мобильное устройство должно иметь маршрут до сервера с Logstash/Elasticsearch. Для этого подойдет создание локальной сети (например, через VPN, если вам нужно объединить устройства в одну подсеть).

Важно: логируйте только то, что действительно нужно, и следите за конфиденциальностью (пароли/токены не должны попадать в логи без маскирования).

Где брать логи в Termux

Термины из ELK подразумевают, что мы читаем события из файлов. В Termux часто удобно организовать ваши логи в каталогах:

  • $HOME/storage/shared/ (если нужно видеть файлы снаружи Termux и обмениваться ими)
  • внутренние каталоги Termux, зависящие от вашей конфигурации (например, /data/data/com.termux/files/home/, где обычно и лежит домашняя директория Termux)
  • лог-файлы ваших скриптов, которые пишутся через tee, logger (если настроено) или прямую запись

Пример: пусть вы решили собирать логи из файла ~/logs/app.log.

mkdir -p ~/logs
# пример: пишем тестовую строку в лог
echo "2026-07-11T12:00:00Z app started" >> ~/logs/app.log

Установка и подготовка Filebeat в контуре

Дальше важно понимать модель запуска Filebeat. В статье приведем конфигурационный подход, который одинаков для разных способов установки (локально, в контейнере, в chroot‑окружении). Вам нужно лишь обеспечить, чтобы Filebeat имел доступ к файлам логов Termux и мог подключаться к Logstash по сети.

Конфигурация Filebeat: input, parsing и output в Logstash

Создадим конфигурацию Filebeat с модулем filestream (предпочтительнее, чем legacy log в современных версиях). Концептуально мы делаем:

  • настраиваем чтение файла;
  • задаем шаблон для добавления полей;
  • направляем события на Logstash.

Пример конфигурации filebeat.yml (адаптируйте пути и адреса под вашу среду):

# filebeat.yml
filebeat.inputs:
  - type: filestream
    enabled: true
    id: termux-app-log
    paths:
      - /home/your_user/logs/app.log
    # Если файл перезаписывается, настройки зависят от поведения вашего приложения.
    # Для большинства сценариев достаточно базовых параметров.

    # Добавим несколько полей метаданных
    fields:
      source_device: termux
      service: app
    fields_under_root: true

processors:
  - add_host_metadata: {}
  - add_fields:
      target: event
      fields:
        dataset: termux.app

output.logstash:
  hosts: ["192.168.1.10:5044"]
  # Если у вас настроены TLS/сертификаты — добавьте параметры SSL.

Обратите внимание на два момента:

  • paths: это путь в файловой системе там, где реально работает Filebeat. Если Filebeat запущен не прямо в Termux‑среде, убедитесь, что он видит тот же путь (например, через bind‑mount).
  • output.logstash.hosts: адрес Logstash из точки зрения Termux/Filebeat.

Запуск Filebeat (пример):

filebeat -e -c /path/to/filebeat.yml

Настройка Logstash: прием от Filebeat и запись в Elasticsearch

Дальше создаем pipeline в Logstash. Типовой задачей будет:

  • принимать события Beats (Filebeat);
  • выполнить разбор сообщения при необходимости (например, если ваши логи формата ISO8601 ...);
  • отправить в Elasticsearch.

Пример файла /etc/logstash/conf.d/termux-beats.conf:

input {
  beats {
    port => 5044
  }
}

filter {
  # Пример: простой разбор сообщения.
  # Если поле сообщения называется [message], используйте его.
  # Формат: "2026-07-11T12:00:00Z app started"
  if [message] {
    grok {
      match => {
        "message" => ["%{TIMESTAMP_ISO8601:log_time} %{WORD:component} %{GREEDYDATA:log_message}"]
      }
      # Если ваши логи имеют другой формат — адаптируйте grok.
    }

    date {
      match => ["log_time", "ISO8601"]
      target => "@timestamp"
      remove_field => ["log_time"]
    }
  }
}

output {
  elasticsearch {
    hosts => ["http://192.168.1.10:9200"]
    index => "termux-app-%{+YYYY.MM.dd}"
  }
}

Запуск Logstash (пример):

logstash -f /etc/logstash/conf.d/termux-beats.conf

Настройка Kibana: индекс, шаблоны и первый дашборд

Чтобы Kibana начал видеть данные, нужно указать индекс. В зависимости от вашей политики и версий Elasticsearch/Kibana это может быть:

  • ручное создание индекс‑паттерна
  • использование данных по шаблонам/ILM (если вы их применяете)

Минимальный сценарий:

  • откройте Kibana → Stack ManagementIndex Patterns
  • создайте шаблон, например termux-app-
  • выберите поле времени @timestamp

Дальше постройте первый запрос:

  • Фильтр по service:app
  • Визуализация: количество событий по времени
  • Таблица: component, log_message, host.name

Практические советы по устойчивости и качеству данных

  • Адаптируйте grok под реальный формат: чем точнее разбор, тем меньше «мусора» в полях.
  • Добавляйте метаданные на стороне Filebeat: service, source_device, event.dataset ускоряют построение фильтров.
  • Следите за ротацией логов: если приложение ротирует файлы, учитывайте поведение вашего читателя (filestream поддерживает это лучше, но зависит от модели ротации).
  • Маскируйте чувствительные данные: лучше настроить фильтры в Logstash (например, regex‑маскирование), чем потом чистить индекс.
  • Ограничьте объем: на мобильном устройстве важны батарея/трафик. Используйте только необходимые файлы и события.

Безопасность: сеть и доступ

ELK требует продуманной сетевой настройки:

  • открывайте порты (например, 5044 Beats) только в локальной сети или через контролируемый доступ;
  • если используете VPN только для создания локальной сети, убедитесь, что трафик защищен и доступ ограничен;
  • по возможности используйте TLS для Beats→Logstash и HTTP→Elasticsearch (настройки зависят от версии и инфраструктуры);
  • ограничьте права на чтение файлов логов в Termux.

Пример потока «запустить — проверить — подтвердить в Kibana»

Быстрый чеклист:

  1. Убедитесь, что Logstash слушает порт 5044.
  2. Запустите Filebeat.
  3. Добавьте строку в ~/logs/app.log на Termux:
echo "2026-07-11T12:05:00Z app user login ok" >> ~/logs/app.log
  1. В Kibana откройте Discover и посмотрите новые события в индексе termux-app-.
  2. Проверьте поля: @timestamp, service, component, log_message.

Заключение

Автоматический сбор и анализ логов приложений из Termux через ELK‑стек — это реальный и практичный способ превратить «мобильные» события в удобную аналитическую картину. Ключ успеха — корректная настройка Filebeat (чтение нужных файлов и метаданные), правильный прием и разбор в Logstash (grok/date и фильтрация), а также грамотная организация индексов и визуализаций в Kibana.

Если вам нужно быстро развернуть связку под вашу сеть, адаптировать фильтры под формат ваших логов или помочь с безопасной настройкой доступа, обращайтесь в РыбинскЛАБ — мы поможем с проектированием и внедрением решения.

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

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

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

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