Appearance
Мониторинг
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- Общее число нод в membershipcluster_nodes_online_total- Число онлайн-нод по heartbeat // Linux-only метрики процесса для дискового I/Oprocess_io_read_bytes_total- Прочитано байт процессом ForgeVis (со storage)process_io_write_bytes_total- Записано байт процессом ForgeVis (на storage)process_io_cancelled_write_bytes_total- Байты отменённых записей (truncation, инвалидация page cache)
Все метрики автоматически содержат лейбл {hostname="..."} для фильтрации по серверам.
Мультисерверный мониторинг
При работе с несколькими инстансами ForgeVis:
- Каждый сервер автоматически сообщает свой hostname через
hostname::get() - Prometheus собирает метрики со всех серверов с их уникальными hostname
- Дашборд Grafana предоставляет выпадающий список Server для фильтрации
- Выберите "All" для просмотра агрегированных метрик со всех серверов
- Выберите конкретные серверы для диагностики отдельных инстансов
Пример использования памяти:
- Сервер показывает
8.75 MBчерезps aux→ Метрика показывает9158656 bytes(~8.7 MB) - Дашборд отображает в KB/MB используя единицу
decbytesдля удобочитаемого формата