Skip to content

tarakan1983/xray-monitoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xray Monitor

Приложение для мониторинга и управления xray сервисом на удаленном сервере.

Возможности

Мониторинг

  • ✅ Мониторинг логов xray в реальном времени через SSH
  • ✅ Цветное выделение логов по фильтрам
  • ✅ Звуковые уведомления
  • ✅ Настраиваемые колонки отображения
  • ✅ Фильтрация по IP, домену, route
  • ✅ Автостарт мониторинга при запуске

Управление

  • ✅ Управление сервисом (старт/стоп/рестарт)
  • ✅ Редактор routing rules с SSH
  • ✅ Добавление/удаление доменов в routing
  • ✅ Backup конфигурации (локально + сервер)
  • ✅ Автоматический рестарт xray после сохранения

Интерфейс

  • ✅ Виджет поверх окон
  • ✅ Настраиваемые цвета и шрифты
  • ✅ Сохранение позиции/размера окна
  • ✅ Немодальное окно заметок с автосохранением
  • ✅ System tray

Логирование

  • ✅ Сохранение логов в файлы (по дням)
  • ✅ Локальное хранение истории

Установка

1. Установка Python 3.8+

Скачать с https://www.python.org/downloads/

2. Установка зависимостей

cd L:\_scripts\System-path\xray
pip install -r requirements.txt

3. Настройка SSH

Убедитесь, что SSH подключение к серверу настроено:

ssh root@192.168.100.24

"color": "#47e977ff" "color": "#3cffe5ff" "color": "#f11ed5ff", "color": "#47e977ff",

Настройка

Отредактируйте monitor_config.json:

Подключение к серверу

"xray": {
  "host": "192.168.100.24",
  "user": "root",
  "password": "",                              // пароль (если нет ключа)
  "ssh_key": "C:\\Users\\user\\.ssh\\id_rsa", // путь к SSH ключу
  "log_path": "/var/log/xray/access.log",
  "service_name": "xray"
}

Варианты аутентификации (по приоритету):

  1. password - если указан, используется пароль
  2. ssh_key - если указан, используется конкретный ключ
  3. Автопоиск ключей в ~/.ssh/ (id_rsa, id_ed25519 и т.д.)

Фильтры логов

"filters": [
  {
    "id": 1,
    "name": "Название фильтра",
    "enabled": true,
    "source_ip": "192.168.100.100",  // пусто = любой
    "destination": "domain.com",      // пусто = любой
    "route": "direct",                // пусто = любой
    "color": "#00FF00",               // цвет текста (HEX)
    "beep": false                     // звуковой сигнал
  }
]

Мониторинг

"monitoring": {
  "local_log_dir": "L:\\_scripts\\System-path\\xray\\logs",
  "update_interval_sec": 1,
  "max_lines": 1000,
  "tail_lines": 50,
  "show_all_logs": false,        // false - только фильтры, true - все
  "display_columns": ["source_ip", "destination", "route"],  // колонки
  "auto_start": false            // автостарт мониторинга
}

Доступные колонки:

  • time - время события (HH:MM:SS)
  • source_ip - IP источника
  • destination - домен/IP назначения
  • route - маршрут (direct/proxy)

Важно: если time НЕ указан в display_columns, время не выводится!

Интерфейс

"widget": {
  "topmost": true,                   // поверх окон
  "opacity": 0.95,                   // прозрачность 0.0-1.0
  "position": {"x": 100, "y": 100},  // автосохранение
  "size": {"width": 900, "height": 600},
  "font_size": 9,
  "font_family": "Consolas",
  "background_color": "#0d1117",     // фон окна логов
  "text_color": "#c9d1d9"            // цвет текста
}

Окно заметок

"notes": {
  "enabled": false,                  // показывать при запуске
  "file": "L:\\_scripts\\System-path\\xray\\notes.txt",
  "position": {"x": 100, "y": 100},  // автосохранение
  "size": {"width": 400, "height": 300}
}

Заметки автоматически сохраняются каждые 2 секунды.

Авто-рестарт

"auto_restart": {
  "enabled": false,          // включить авто-рестарт
  "interval_hours": 2        // интервал в часах
}

Запуск

cd L:\_scripts\System-path\xray
python XrayMonitor.py

Формат логов

Приложение парсит два формата логов xray:

Формат 1: Доменные имена

2025/11/18 02:17:11.325159 from 192.168.100.100:22000 accepted //discovery-announce-v6.syncthing.net:443 [http >> direct]

Вывод: 02:17:11 || 192.168.100.100 || syncthing.net || direct

Формат 2: IP адреса

2025/11/18 02:17:07.117456 from 192.168.100.100:65417 accepted http://192.168.100.10:5000/webapi/DownloadStation/statistic.cgi [http >> direct]

Вывод: 02:17:07 || 192.168.100.100 || 192.168.100.10 || direct

Новый функционал (v1.0.0)

Редактор Routing Rules

  • Открытие: кнопка ⚙ Редактор Routing в главном окне
  • Загрузка config.json с сервера через SFTP
  • Просмотр списка routing rules
  • Добавление/удаление/редактирование доменов
  • Поиск по доменам
  • Сортировка доменов
  • Сохранение на сервер с автоматическим рестартом xray
  • Backup конфигурации (локально + на сервере)

Окно заметок

  • Чекбокс 📝 Заметки в главном окне
  • Немодальное окно для быстрых записей
  • Автосохранение каждые 2 секунды
  • Сохранение в L:\_scripts\System-path\xray\notes.txt
  • Автоматическое восстановление при запуске
  • Запоминание позиции и размера

Настраиваемые колонки

В monitor_config.jsonmonitoring.display_columns:

"display_columns": ["source_ip", "destination", "route"]

Порядок колонок = порядок вывода. Время выводится только если указан "time".

Настраиваемые цвета

В monitor_config.jsonwidget:

"background_color": "#0d1117",
"text_color": "#c9d1d9"

Автостарт мониторинга

В monitor_config.jsonmonitoring:

"auto_start": true

Сохранение позиции окон

Все окна автоматически сохраняют позицию и размер при закрытии.

Горячие клавиши

  • Ctrl+C в окне терминала - остановка приложения
  • Закрытие окна - полная остановка приложения

Логи

Локальные логи сохраняются в:

L:\_scripts\System-path\xray\logs\xray_monitor_YYYYMMDD.log

Каждый день создается новый файл.

Цвета в конфиге

ВАЖНО: используйте только 6-символьный HEX формат:

  • ✅ Правильно: "color": "#3CFFE5"
  • ❌ Неправильно: "color": "#3CFFE5FF" (8 символов не работают)

Color picker в VSCode

Для JSON файлов установите расширения:

  • naumovs.color-highlight - подсветка цветов
  • bierner.color-info - picker при наведении

Устранение неполадок

Ошибка подключения SSH

  1. Проверьте доступность сервера: ping 192.168.100.24
  2. Проверьте SSH: ssh root@192.168.100.24
  3. Убедитесь, что ключи SSH настроены

Ошибка чтения логов

  1. Проверьте путь к логу в config.json
  2. Убедитесь, что у пользователя есть права: ls -la /var/log/xray/

Не работает управление сервисом

  1. Проверьте название сервиса: systemctl status xray
  2. Убедитесь, что у пользователя есть права sudo

Не загружается config editor

  1. Проверьте путь к конфигу xray в monitor_config.json
  2. Убедитесь, что файл существует: ls -la /usr/local/etc/xray/config.json
  3. Проверьте права доступа

Окно заметок не сохраняется

  1. Проверьте права на запись: L:\_scripts\System-path\xray\notes.txt
  2. Убедитесь, что папка существует

Структура проекта

xray-monitoring/
├── XrayMonitor.py              # Точка входа
├── monitor_config.json         # Конфигурация
├── requirements.txt            # Зависимости
├── README.md                   # Документация
├── .vscode/
│   └── copilot-context.md      # Контекст для AI
└── ui/
    ├── __init__.py
    ├── main_window.py          # Главное окно
    ├── ssh_worker.py           # SSH мониторинг
    ├── config_editor.py        # Редактор routing
    └── notes_window.py         # Окно заметок

Версия

1.0.0 - 2025-12-04

Changelog

  • ✅ Базовый мониторинг логов
  • ✅ Управление xray сервисом
  • ✅ Редактор routing rules
  • ✅ Окно заметок с автосохранением
  • ✅ Настраиваемые колонки вывода
  • ✅ Настраиваемые цвета интерфейса
  • ✅ Автостарт мониторинга
  • ✅ Автосохранение позиции окон

Автор

AI Assistant (GitHub Copilot)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors