Эксплуатация

Системные требования Windows

Для работы агента СПП необходима 64-битная операционная система windows 8/Windows Server 2012 или более новые версии.

Установка в windows

  1. Распакуйте файлы поставки
  2. Отредактируйте конфиг
  3. Запустите install.bat (понадобятся права администратора)

Конфигурирование

Конфигурация в Windows осуществляется через файл .env. Конфигуряция в Linux осуществляетв через файл .env ИЛИ через переменные среды (файл .env имеет больший приоритет).

Файл .env должен располагаться в одном каталоге с запускаемым файлом агента. В файле .env задаются параметры агента в формате ИМЯ_ПАРАМЕТРА=ЗНАЧЕНИЕ_ПАРАМЕТРА. Каждый параметр должен быть описан в отдельной строке (1 параметр - 1 строка).

Параметры агента:

 


При конфигурировании .env файла по дефолту будет использоваться СУБД sqlite, но есть возможность использовать Postgres

  • CFG_POSTGRES_DB - имя БД
  • CFG_POSTGRES_USER - имя пользователя БД
  • CFG_POSTGRES_PASSWORD - пароль от БД
  • CFG_POSTGRES_PORT - порт для подключения
  • CFG_POSTGRES_HOST - хост

Также дополнительные параметры настройки postgres описаны тут

При возникновении следующей ошибки следует проверить логин, пароль и имя самой БД
Screenshot from 2024-08-16 12-06-33.png


Для конфигурации режима прокси в .env файле необходимо добавить параметры:


 

Возможна конфигурация агента через веб интерфейс. Такой вид конфигурации доступен только на запущенном агенте.

Для запуска конфигурации необходимо зайти на страницу http://127.0.0.1:CFG_API_PORT/config

Где CFG_API_PORT - это порт на котором запущен агент.

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

http://127.0.0.1:CFG_API_PORT/config?full_config=true

Агент принимает запросы только локальные запросы (из той же системы на которой сам установлен)

 

Настройки датчиков для работы с агентом

Для приема метрик с устройств на самих устройствах нужно настроить HTTP выгрузку на агент.

Url для выгрузки с датчиков составляется по схеме:

http://IP:PORT/collector/metrics - для метрик
http://IP:PORT/collector/alarm - для лога

где IP - ip адрес устройства, на котором установлен агент

PORT - значение параметра CFG_API_PORT из конфига агента

Процесс работы автоматического обновления агента

Описание

Автоматические обновления работают только для собранных версий для windows и работающих в качестве службы windows. При CFG_AGENT_UPGRADE_AUTO=1 агент в соответствии с CRON-расписанием заданным в CFG_AGENT_UPGRADE_AUTO_CRON запускает процесс проверки обновлений.

  1. Подключение в FTP серверу.
    1. Адрес сервера: CFG_AGENT_UPGRADE_FTP_HOST:CFG_AGENT_UPGRADE_FTP_HOST
    2. Логин: CFG_AGENT_UPGRADE_FTP_USER
    3. Пароль: CFG_AGENT_UPGRADE_FTP_PASSWORD
  2. Получение списка файлов в папке CFG_AGENT_UPGRADE_FTP_PATH на сервере
  3. Определение наличия более новых версий агента по полученному списку
  4. Скачивание дистрибутивов всех новых версий
  5. Обновление

Настройки агента

Сборка и публикация дистрибутива

Для сборки дистрибутива необходим python версии 3.11. В корне репозитория агента лежат скрипты для сборки агента

  1. Запускаем соответствующий скрипт для сборки дистрибутива 
  2. В случае успешной сборки ищем архив с дистрибутивом в папке build (например win_collector.agent_1.1.16.zip)
  3. Копируем архив с дистрибутивом на FTP сервер

Матрица команд

  3dh 3db 3dx 3dv 3hx 3dm 3dd 3dt cm

upload_data

✘[1]
reboot ✘[2]
get_config ✘[2]
set_config ✘[2]
reset_auth ✔[3] ✔[3] ✔[3] ✘[2]
flash ✘[2]
screenshot ✔[4] ✔[4] ✔[5] ✘[7] ✘[7] ✘[2]
video_record ✘[6] ✘[7] ✘[2]
  1. Устройство не поддерживает выгрузку исторических данных
  2. Нет поддержки в текущей реализации (есть ли поддержка на самом устройстве не проверялось)
  3. Используется только пароль. Имя пользователя всегда 'admin'
  4. Поддержка мультисенсора
  5. Есть поддержка мультисенсора на устройстве, но пока не реализовано
  6. Нет поддержки выгрузки по расписанию (выгружается постоянно)
  7. Видео поток транслируется через веб сокет. документации по формату не нашел

 

Механизм восполнения пробелов в метриках

Проблема

Метрики поступают в агент неравномерно. Некоторые устройства не могут прислать метрики из-за проблем с сетью или по причине того что они выключены. Для исключения пробелов в метриках был реализован механизм восполнения пробелов в метриках

Реализация

Для реализации механизма понадобилось переработать хранение метрик в локальной базе агента - удаление метрик после отправки заменил на установку флага синхронизации. Сами метрики хранятся в локальной базе агента в течении N дней (задается в переменной CFG_AGENT_METRICS_AGE_MAX_DAYS).

В механизме используются следующие сущности метрики:

gap_checker производит анализ метрик в локальной базе

Промежуток времени не содержит метрики если истинно одно из условий

Механизм работает следующим образом:

  1. По расписанию (задается в переменной CFG_AGENT_METRICS_CHECK_GAPS_CRON) запускается функция выявления пробелов (далее gap_checker)
  2. При CFG_AGENT_METRICS_CHECK_GAPS_ENABLED != 1 выполнение завершается
  3. Для каждого зарегистрированного (is_new == False) устройства с выключенным пассивным режимом и поддерживающим команду upload_data gap_checker просматривает все метрики в локальной базе за промежуток с CHECKER_PERIOD_START до CHECKER_PERIOD_END.
  4. Если gap_checker находит промежутки времени, не содержащие ни одной метрики
    1. Скачивание исторических данных с устройства по каждому промежутку

Поддерживаемые типы метрик устройств

Тип датчика Форматы
3dx

xml - для версий старше 5.3

json - для версий новее 5.3

3dv xml
3dh xml
3db xml
3dt json
3dm json
3dd json

Кэширование метрик

В агенте реализовано сохранение метрик в кэш перед записью (Ранее часто встречалась ситуация что метрики в базу пишутся по одному, что замедляло общую работу агента), после включения кэша метрики перед отправкой в БД формируют чанки происходит массовая вставка.

Кэш устанавливается через env файл:

Важно!

Размер кэша не следует ставить больше чем 999 (В таком случае возможны ошибки, детальное тестирование с большим размером кэша не проводилось).

Кэш работает только с теми метриками у которых в момент записи включена опция ингорирования дубликатов, т.е. метрика не может перезаписываться. (Соответственно команда upload_data не использует кэширование)