Перейти к содержимому
Метрики Prometheus и мониторинг

Метрики Prometheus и мониторинг

TorrPlay отдаёт метрики в формате Prometheus в реальном времени, поэтому сервис легко интегрируется с Prometheus, Grafana и агентами OpenTelemetry.

Эндпоинты

  • /metrics — эндпоинт для сбора метрик Prometheus
  • /api/system/metrics — краткая сводка в JSON с полями active_torrents, download_speed и upload_speed

Перечисленные ниже метрики доступны только через /metrics.

Доступные метрики

Активность приложения и торрентов

Название метрикиТипМеткиОписание
torrplay_downloading_torrentsGauge—Количество торрентов, скачиваемых сейчас в фоне
torrplay_loaded_torrentsGaugereasonЗагруженные торренты с меткой reason: background или on_demand
torrplay_streaming_torrentsGauge—Количество торрентов с открытым сеансом просмотра; каждый считается один раз

Потоковое воспроизведение

Название метрикиТипМеткиОписание
torrplay_stream_read_duration_secondsHistogramstorageЗадержка чтения потока, включая ожидание данных торрента
torrplay_stream_requests_in_flightGauge—Количество обрабатываемых HTTP-запросов потокового воспроизведения

HTTP-трафик и задержка

Название метрикиТипМеткиОписание
http_request_duration_secondsHistogramcode, method, pathГистограмма продолжительности обработки запросов
http_request_size_bytesSummarycode, method, pathСтатистика размера входящих запросов в байтах
http_requests_totalCountercode, method, pathОбщее количество обработанных HTTP-запросов
http_response_size_bytesSummarycode, method, pathСтатистика размера ответов в байтах

BitTorrent-клиент

Название метрикиТипМеткиОписание
torrplay_torrent_banned_peersGauge—Адреса пиров, заблокированных за передачу повреждённых данных
torrplay_torrent_data_bytes_totalCounterdirectionПолезные байты частей, полученные или отправленные BitTorrent-клиентом
torrplay_torrent_peersGaugestateПодключённые пиры, устанавливаемые соединения и ожидающие адреса
torrplay_torrent_pieces_hashed_totalCounterresultЧасти с успешной (good) или неуспешной (bad) проверкой хеша

Хранилище в оперативной памяти

Название метрикиТипМеткиОписание
torrplay_storage_completion_misses_totalCounter—Части, вытесненные до отметки о завершении в торрент-клиенте
torrplay_storage_evicted_incomplete_bytes_totalCounter—Загруженные байты, потерянные при вытеснении неполных частей
torrplay_storage_evicted_pieces_totalCounterstateПолные и неполные части, вытесненные из памяти
torrplay_storage_memory_limit_bytesGauge—Лимит хранилища в оперативной памяти
torrplay_storage_memory_used_bytesGauge—Память, зарезервированная сейчас под данные частей
torrplay_storage_protected_evictions_totalCounterprotectionВытеснение границ файлов и активных диапазонов в крайнем случае
torrplay_storage_read_failures_totalCounterreasonОшибки чтения вытесненных или не полностью загруженных частей
torrplay_storage_refused_hashes_totalCounter—Отменённые проверки хеша после вытеснения части данных

Коллекторы среды выполнения Go и системных показателей

TorrPlay также регистрирует стандартные коллекторы среды исполнения Go (go_*) и процессов (process_*): использование оперативной памяти, размер кучи, паузы сборщика мусора, открытые файловые дескрипторы и загрузку CPU.

Настройка сбора метрик Prometheus

Если аутентификация в TorrPlay отключена, добавьте следующую цель в prometheus.yml:

scrape_configs:
  - job_name: "torrplay"
    scrape_interval: 15s
    static_configs:
      - targets: ["localhost:8090"]

Для Basic-аутентификации добавьте в настройки задачи учётные данные:

scrape_configs:
  - job_name: "torrplay"
    scrape_interval: 15s
    basic_auth:
      username: "your-username"
      password_file: "/etc/prometheus/torrplay-password"
    static_configs:
      - targets: ["localhost:8090"]

Для Bearer-аутентификации сохраните административный токен доступа в файле и укажите его в настройках задачи:

scrape_configs:
  - job_name: "torrplay"
    scrape_interval: 15s
    authorization:
      type: Bearer
      credentials_file: "/etc/prometheus/torrplay-token"
    static_configs:
      - targets: ["localhost:8090"]

Получите административный токен через /oauth/token. Токен воспроизведения не даёт доступа к /metrics.

Токен доступа действует 24 часа, поэтому файл с ним нужно обновлять хотя бы раз в сутки — например, плановым заданием, которое запрашивает новый токен через /oauth/token. Prometheus перечитывает credentials_file при каждом опросе, так что перезапускать его не придётся. Для автоматического сбора метрик проще Basic-аутентификация: её учётные данные не истекают.

Пример запроса

Количество торрентов с открытым сеансом просмотра на всех серверах:

sum(torrplay_streaming_torrents)

Количество обрабатываемых HTTP-запросов потокового воспроизведения:

sum(torrplay_stream_requests_in_flight)

Определение 95-го процентиля задержки HTTP-запросов:

histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
Последнее обновление