◆ ForgeVis
Skip to content

Мониторинг ​

ForgeVis предоставляет метрики Prometheus и готовый дашборд Grafana для мониторинга системы.

Конфигурация ​

yaml
# Логирование
logging:
  directory: /var/log/forgevis  # Путь к логам
  level: info                       # trace, debug, info, warn, error
  console: true                     # Вывод в консоль

# Метрики Prometheus
metrics:
  enabled: true
  address: :9998
  allowOrigin: '*'

Логи:

  • forgevis-info-YYYY-MM-DD.log - информационные логи
  • forgevis-error-YYYY-MM-DD.log - ошибки и предупреждения
  • Ротация по дням автоматически

Метрики: http://localhost:9998/metrics

Настройка Prometheus ​

Минимальный конфиг prometheus.yml:

yaml
scrape_configs:
  - job_name: 'forgevis'
    static_configs:
      - targets: ['192.168.1.10:9998', '192.168.1.11:9998']
    scrape_interval: 15s

Метрики автоматически содержат лейбл hostname с именем сервера для поддержки мультисерверного мониторинга.

Grafana Dashboard ​

Скачайте дашборд Grafana для ForgeVis и импортируйте его в Grafana (Dashboards → New → Import → Upload JSON).

Панели дашборда ​

Row 1: Статус системы

  • Camera Status - Зарегистрировано камер / Пишут сейчас / В паузе перед переподключением / Не пишут
  • Camera Connections & Clients - Подключения к камерам (основной поток) / RTSP клиенты (main/sub) / HLS мюксеры (main/sub)

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

  • Video Frame Processing Rate - Обработка видеокадров (fps)
  • Broadcast Buffer Status - Заполненность внутренних буферов (video/audio)

Row 3: Ресурсы

  • Process Memory Usage - Потребление памяти (RSS)
  • Average HLS Segment Size - Средний размер HLS сегментов
  • Process Disk IO (Read/Write MB/s) - Дисковый I/O процесса (Linux only)

Row 4: Проблемы

  • Recording Errors by Type - Ошибки записи по причине (connect/stream/write/internal/unclassified)
  • Broadcast Lag Events & Frames Lost - События отставания буферов и потерянные кадры

Переменные ​

  • Server - Выбор сервера по hostname (поддержка multi-select и "All")

Справочник метрик ​

Камеры ​

  • cameras_registered_total - Зарегистрировано камер
  • cameras_recording_active - Активные записи
  • cameras_recording_errors - Камеры в паузе перед переподключением
  • camera_streams_active_total - Активные подключения к камерам (только main streams)

RTSP ​

  • rtsp_clients_connected_total{stream="main"|"sub"} - RTSP клиенты по типу потока

HLS ​

  • hls_muxers_active_total{stream="main"|"sub"} - Активные HLS мюксеры

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

  • video_frames_received_total - Получено видеокадров (counter)
  • broadcast_channel_capacity{channel="video"|"audio"} - Емкость буфера
  • broadcast_channel_len{channel="video"|"audio"} - Текущая заполненность буфера

Ошибки ​

  • recording_errors_total{type="connect"|"stream"|"write"|"internal"|"unclassified"} - Ошибки записи по причине: сеть или камера, поток замолчал, диск узла, ошибка сервиса, нераспознанная ошибка (её полный текст пишется в журнал)
  • broadcast_lag_events_total{consumer="recorder"|"rtsp"|"hls"} - События отставания по потребителям
  • broadcast_lag_frames_total - Потеряно кадров из-за отставания

Система ​

  • process_resident_memory_bytes - Потребление памяти процессом (RSS)
  • process_start_time_seconds - Время старта процесса (Unix timestamp)
  • process_cpu_seconds_total - Суммарное CPU-время процесса (секунды)
  • recording_segments_written_total - Записано сегментов
  • record_fs_total_bytes{path_root="..."} - Общий объём ФС записи по корню пути
  • record_fs_free_bytes{path_root="..."} - Свободный объём ФС записи по корню пути

Кластер ​

  • cluster_nodes_total - Общее число нод в membership
  • cluster_nodes_online_total - Число онлайн-нод по heartbeat // Linux-only метрики процесса для дискового I/O
  • process_io_read_bytes_total - Прочитано байт процессом ForgeVis (со storage)
  • process_io_write_bytes_total - Записано байт процессом ForgeVis (на storage)
  • process_io_cancelled_write_bytes_total - Байты отменённых записей (truncation, инвалидация page cache)

Все метрики автоматически содержат лейбл {hostname="..."} для фильтрации по серверам.

Мультисерверный мониторинг ​

При работе с несколькими инстансами ForgeVis:

  1. Каждый сервер автоматически сообщает свой hostname через hostname::get()
  2. Prometheus собирает метрики со всех серверов с их уникальными hostname
  3. Дашборд Grafana предоставляет выпадающий список Server для фильтрации
  4. Выберите "All" для просмотра агрегированных метрик со всех серверов
  5. Выберите конкретные серверы для диагностики отдельных инстансов

Пример использования памяти:

  • Сервер показывает 8.75 MB через ps aux → Метрика показывает 9158656 bytes (~8.7 MB)
  • Дашборд отображает в KB/MB используя единицу decbytes для удобочитаемого формата

Proprietary software.