Skip to main content

Обзор

Система мониторинга трафика v2 выявляет пользователей с аномально высоким потреблением и уведомляет администраторов. Работает в режиме только уведомлений — автоматической блокировки нет. Два типа проверок:
  • Быстрая проверка — дельта трафика между интервалами
  • Ежедневная проверка — абсолютный объём за 24 часа

Включение мониторинга

# Глобальный переключатель
TRAFFIC_MONITORING_ENABLED=true

# Быстрая проверка (дельта)
TRAFFIC_FAST_CHECK_ENABLED=true
TRAFFIC_FAST_CHECK_INTERVAL_MINUTES=10
TRAFFIC_FAST_CHECK_THRESHOLD_GB=5.0

# Ежедневная проверка (абсолютный объём за 24ч)
TRAFFIC_DAILY_CHECK_ENABLED=true
TRAFFIC_DAILY_CHECK_TIME=00:00
TRAFFIC_DAILY_THRESHOLD_GB=50.0
Все настройки можно менять без перезапуска через админ-панель (Мониторинг → Настройки трафика).

Быстрая проверка (Fast Check)

Проверяет дельту — сколько трафика потрачено между двумя снимками.

Как работает

  1. При старте бота создаётся начальный снимок (snapshot) трафика всех пользователей
  2. Каждые N минут загружаются текущие данные из Remnawave API
  3. Для каждого пользователя вычисляется дельта: текущий_трафик - предыдущий_трафик
  4. Если дельта превышает порог — отправляется уведомление администратору
При первом запуске проверка не выполняется — бот только сохраняет базовый снимок для последующего сравнения.

Параметры

ПеременнаяТипПо умолчаниюОписание
TRAFFIC_FAST_CHECK_ENABLEDboolfalseВключить быструю проверку
TRAFFIC_FAST_CHECK_INTERVAL_MINUTESint10Интервал между проверками (мин)
TRAFFIC_FAST_CHECK_THRESHOLD_GBfloat5.0Порог дельты трафика (ГБ)

Ежедневная проверка (Daily Check)

Проверяет абсолютный объём трафика за последние 24 часа через Remnawave Bandwidth Stats API.

Как работает

  1. В указанное время запрашивает статистику трафика каждого пользователя за последние 24 часа
  2. Если суммарный трафик превышает порог — отправляется уведомление
  3. Запросы выполняются параллельно с ограничением конкурентности

Параметры

ПеременнаяТипПо умолчаниюОписание
TRAFFIC_DAILY_CHECK_ENABLEDboolfalseВключить ежедневную проверку
TRAFFIC_DAILY_CHECK_TIMEstr00:00Время проверки в формате HH:MM (UTC)
TRAFFIC_DAILY_THRESHOLD_GBfloat50.0Порог трафика за 24 часа (ГБ)

Фильтрация

По нодам

Можно указать белый список (мониторить только эти ноды) или чёрный список (мониторить все, кроме этих).
# Белый список — мониторить ТОЛЬКО эти ноды (приоритетнее чёрного)
TRAFFIC_MONITORED_NODES=uuid-node-1,uuid-node-2

# Чёрный список — мониторить все, КРОМЕ этих
TRAFFIC_IGNORED_NODES=uuid-test-node
Если указан TRAFFIC_MONITORED_NODES, то TRAFFIC_IGNORED_NODES игнорируется. Можно добавлять комментарии после #.

По пользователям

Исключение сервисных/туннельных аккаунтов с высоким трафиком:
# UUID пользователей для исключения из проверок
TRAFFIC_EXCLUDED_USER_UUIDS=uuid-tunnel-account,uuid-service-account
Сравнение UUID регистронезависимое.

Уведомления

Куда отправляются

Уведомления отправляются в топик SUSPICIOUS_NOTIFICATIONS_TOPIC_ID (с фоллбэком на ADMIN_NOTIFICATIONS_TOPIC_ID).
SUSPICIOUS_NOTIFICATIONS_TOPIC_ID=123

Защита от спама

МеханизмОписание
Кулдаун на пользователяПовторное уведомление по тому же пользователю не чаще TRAFFIC_NOTIFICATION_COOLDOWN_MINUTES (по умолчанию 60 мин)
Лимит за проверкуМаксимум 10 уведомлений за одну проверку
Задержка между отправками0.5 сек между уведомлениями для защиты от rate limit Telegram
TRAFFIC_NOTIFICATION_COOLDOWN_MINUTES=60

Формат уведомления

⚠️ Превышение трафика

👤 Имя Фамилия
🆔 ID: 123456789
📱 Username: @username

🔑 UUID: user-uuid-here

⚡ Быстрая проверка
📊 За интервал: 7.50 ГБ
📊 Порог: 5.00 ГБ
🚨 Превышение: 2.50 ГБ

🖥 Сервер: DE-Frankfurt-1
   node-uuid-here

🕐 24.02.2026 15:30:00 UTC
Для ежедневной проверки заголовок меняется на «Суточная проверка», трафик показывается как «За 24 часа».

Производительность

ПеременнаяТипПо умолчаниюОписание
TRAFFIC_CHECK_BATCH_SIZEint1000Размер пакета при загрузке пользователей из Remnawave API
TRAFFIC_CHECK_CONCURRENCYint10Параллельные запросы при ежедневной проверке

Хранение данных

Снимки трафика хранятся в Redis с автоматическим фоллбэком на оперативную память.
ПеременнаяТипПо умолчаниюОписание
TRAFFIC_SNAPSHOT_TTL_HOURSint24Время жизни снимка в Redis (часы)
Redis-ключи:
КлючСодержимое
traffic:snapshotJSON-словарь {uuid: bytes}
traffic:snapshot:timeВремя последнего снимка (ISO)
traffic:notifications:{uuid}Время последнего уведомления (TTL 24ч)
При перезапуске бота снимок из Redis переиспользуется — не нужно ждать повторного накопления данных.

Админ-панель

В разделе Мониторинг доступны:
  • Проверка трафика — ручной запуск быстрой проверки с отображением результатов (топ-10 нарушителей)
  • Настройки трафика — изменение всех параметров без перезапуска:
    • Вкл/выкл быстрой и ежедневной проверок
    • Интервал, пороги, время ежедневной проверки
    • Кулдаун уведомлений
    • Информация о фильтрах нод и пользователей (только чтение)

Устаревшие параметры

Для обратной совместимости с v1 поддерживаются:
ПеременнаяОписание
TRAFFIC_THRESHOLD_GB_PER_DAYПорог в ГБ/день (используется как порог быстрой проверки если TRAFFIC_FAST_CHECK_ENABLED=false)
TRAFFIC_MONITORING_INTERVAL_HOURSИнтервал в часах (конвертируется в секунды)
Рекомендуется использовать новые переменные TRAFFIC_FAST_CHECK_* и TRAFFIC_DAILY_* вместо устаревших.

Полный пример конфигурации

# Глобальный переключатель
TRAFFIC_MONITORING_ENABLED=true

# Быстрая проверка: каждые 5 минут, порог 3 ГБ
TRAFFIC_FAST_CHECK_ENABLED=true
TRAFFIC_FAST_CHECK_INTERVAL_MINUTES=5
TRAFFIC_FAST_CHECK_THRESHOLD_GB=3.0

# Ежедневная проверка: в полночь, порог 30 ГБ
TRAFFIC_DAILY_CHECK_ENABLED=true
TRAFFIC_DAILY_CHECK_TIME=00:00
TRAFFIC_DAILY_THRESHOLD_GB=30.0

# Мониторить только определённые ноды
TRAFFIC_MONITORED_NODES=uuid-prod-node-1,uuid-prod-node-2

# Исключить сервисные аккаунты
TRAFFIC_EXCLUDED_USER_UUIDS=uuid-tunnel-account

# Уведомления: кулдаун 30 минут, в отдельный топик
TRAFFIC_NOTIFICATION_COOLDOWN_MINUTES=30
SUSPICIOUS_NOTIFICATIONS_TOPIC_ID=123

# Производительность
TRAFFIC_CHECK_BATCH_SIZE=500
TRAFFIC_CHECK_CONCURRENCY=5
TRAFFIC_SNAPSHOT_TTL_HOURS=48