Что такое файловое хранилище?

Файловое хранилище — это новый компонент программного комплекса Kickidler, предназначенный для хранения бинарных данных (видео и аудио), собранных агентами, вне центральной базы данных. Хранилище работает на локальном диске и позволяет существенно повысить стабильность и производительность системы.

Файловое хранилище обеспечивает:

  • хранение всех видео- и аудиофайлов, записанных агентом Kickidler,
  • разгрузку PostgreSQL от объёмных бинарных данных,
  • повышение масштабируемости при работе с большим числом агентов.

Типы сохраняемых данных:

  • screen/ — видеозаписи экрана,
  • audio/ — аудиозаписи с микрофона.

Структура хранения

Данные записываются по следующей структуре:

<год>/<месяц>/<день>/<тип>/

Такой подход обеспечивает гибкость и упрощает администрирование.

Удаление данных

Система автоматически удаляет устаревшие данные:

  • проверка проводится каждые 10 минут,
  • удаление выполняется посуточно (папками),
  • срок хранения настраивается через интерфейс центральной ноды.

Что происходит при установке и обновлении

При новой установке:

  • пользователь указывает путь к хранилищу,

При обновлении:

  • существующие данные в базе остаются,
  • новые видео и аудио сохраняются во внешнее хранилище,
  • обеспечивается обратная совместимость: система продолжает читать старые данные из БД.

Особенности и ограничения

  • поддержка более 1000 агентов одновременно,
  • нет ограничения на размер .blob (до 9 ГБ),
  • повторная отправка данных при разрыве связи,
  • уникальные ключи исключают дублирование,
  • безопасность обеспечивается правами доступа ОС (файлы не шифруются).

Расположение хранилища (по умолчанию)

Windows:

C:\ProgramData\ki-data

Linux:

/var/opt/ki

Важно: Директории создаются автоматически после установки сервера.

Изменение пути к хранилищу 

Путь к хранилищу можно изменить через конфигурационный файл node.ini.

Инструкция по изменению пути:

  1. Остановите службу KickidlerNode (nns):

    Через "Службы" Windows (services.msc) или командную строку/терминал:
    net stop nns
    для Linux
    systemctl stop kickidlernode
  2. Откройте конфигурационный файл:

    Перейдите в папку: C:\Program Files\KickidlerNode\config\ (Windows) или /opt/KickidlerNode/ 

    Откройте файл node.ini в текстовом редакторе (Блокнот, Notepad++, Vim, Nano и т.д.).

  3. Задайте новый путь:

    Найдите строку

    fileStoragePath=

    Если строка существует:

    Измените значение после = на абсолютный путь к новой желаемой директории хранения.

    Если строки нет:

    Добавьте новую строку в конец файла:

    fileStoragePath=<Новый_Путь>

    Формат пути:

    Используйте прямые слеши (`/`) (Unix-стиль), даже в Windows.

    Пример для Windows: fileStoragePath=D:/KickidlerData/ или fileStoragePath=E:/Monitoring/Records/

    Пример для Linux: fileStoragePath=/mnt/storage/kickidler_data/

    Убедитесь, что путь заканчивается на /.

  4. Сохраните файл `node.ini`.

  5. Запустите службу KickidlerNode (nns):

    Windows
    net start nns
    Linux
    systemctl start kickidlernode
  6. Перенос существующих данных:

    Если вам нужны записи, уже находящиеся в старой папке (C:\ProgramData\ki-data или /var/opt/ki), вручную скопируйте или переместите все содержимое старой папки в новую папку, указанную в fileStoragePath=, после запуска службы с новыми настройками.

    Убедитесь, что структура внутри новой папки соответствует старой (Год/Месяц/День/screen/, Год/Месяц/День/audio/).

    Ключевые предупреждения при изменении пути:

    Права доступа: Убедитесь, что учетная запись, под которой работает служба nns (windows) KickidlerNode ), имеет полные права (чтение/запись/изменение) на новую целевую директорию и все ее поддиректории.

    Достаточное место: На новом диске должно быть достаточно свободного места для хранения записей.

    Остановка службы: Изменение конфига требует обязательной остановки службы. Изменение "на лету" не поддерживается и может привести к ошибкам.

Структура хранения данных внутри хранилища

   Данные организованы иерархически по дате:

       Год (YYYY)/

           Месяц (MM)/

               День (DD)/

                   screen/ (Папка с видеофайлами)

                   audio/ (Папка с аудиофайлами)

Форматы файлов (Внутри `screen/` и `audio/`):

  • <Число>.lock
  • <Число>.blob
  • <Число>.key

Важно: Эти файлы не являются стандартными видео/аудио файлами (.mp4, .wav и т.д.). Их нельзя открыть напрямую сторонними плеерами. Они используются исключительно плеером внутри Kickidler Viewer. Удаление этих файлов сделает соответствующие записи недоступными для просмотра в Viewer.

Управление сроком хранения и удаление данных

Автоматическое удаление: Начиная с мая 2025 года, добавлена функция автоматического удаления видео (и связанных с ними аудио) данных по истечении заданного срока.

Настройка срока хранения:

  1. Откройте веб-интерфейс Администратора Kickidler.
  2. Перейдите в раздел: `Конфигурация` -> `Компоненты и координация` -> `Сервер`.
  3. Найдите параметр `Период хранения видео`.
  4. Установите желаемое количество дней, в течение которых записи должны храниться на Node (например, 7, 14, 30).
  5. Сохраните изменения конфигурации сервера.

Как это работает:

По истечении установленного "Периода хранения видео" (считая от даты записи):

  1. Записи удаляются из центральной базы данных сервера.
  2. Соответствующие файлы (.lock, .blob, .key) в локальном хранилище на Node автоматически удаляются.

Ручное удаление файлов из папок хранилища больше не требуется и не рекомендуется, так как файлы, удаленные вручную до истечения срока, сделают записи недоступными в Viewer, а файлы, оставшиеся после истечения срока, будут удалены автоматически.

Ручное удаление данных 

Не рекомендуется для повседневного управления, так как автоматическое удаление теперь покрывает эту задачу.

Используйте только если:

  •        Требуется немедленно освободить место на диске прямо сейчас.
  •        Нужно удалить данные за конкретный период, который еще не истек согласно настройке "Период хранения видео".

Как удалить вручную:

  1. Остановите службу KickidlerNode (nns) (см. п.3.1).
  2. Перейдите в папку локального хранилища (стандартную или измененную).
  3. Удалите соответствующие подпапки (Год/Месяц/День), данные из которых хотите стереть.
  4. Запустите службу KickidlerNode (nns).

Важное предупреждение: Удаление папок/файлов вручную напрямую приведет к невозможности просмотра соответствующих записей в Kickidler Viewer. Данные в БД сервера не удаляются автоматически при этом и могут стать "битыми" (ссылаться на отсутствующие файлы).

Резюме для администратора:

  1. Путь хранилища:

    Настраивается в node.ini -> fileStoragePath (в Unix-стиле) после остановки службы. Проверьте права!

  2. Структура:

    Год/Месяц/День/screen|audio/ с файлами .lock, .blob, .key. Не трогайте вручную без необходимости.

  3. Очистка:

    Настройте `Период хранения видео` в веб-интерфейсе (Конфигурация -> Компоненты и координация -> Сервер). Автоматическое удаление файлов и записей из БД теперь работает. Ручная чистка - крайняя мера.