Эксплуатация
- Системные требования Windows
- Установка в windows
- Конфигурирование
- Настройки датчиков для работы с агентом
- Процесс работы автоматического обновления агента
- Матрица команд
- Механизм восполнения пробелов в метриках
- Поддерживаемые типы метрик устройств
- Кэширование метрик
Системные требования Windows
Для работы агента СПП необходима 64-битная операционная система windows 8/Windows Server 2012 или более новые версии.
Установка в windows
- Распакуйте файлы поставки
- Отредактируйте конфиг
- Запустите install.bat (понадобятся права администратора)
Конфигурирование
Конфигурация в Windows осуществляется через файл .env. Конфигуряция в Linux осуществляетв через файл .env ИЛИ через переменные среды (файл .env имеет больший приоритет).
Файл .env должен располагаться в одном каталоге с запускаемым файлом агента. В файле .env задаются параметры агента в формате ИМЯ_ПАРАМЕТРА=ЗНАЧЕНИЕ_ПАРАМЕТРА. Каждый параметр должен быть описан в отдельной строке (1 параметр - 1 строка).
Параметры агента:
-
CFG_API_PORT - порт на котором запускается агент. По умолчанию - 8080
-
CFG_RPC_PORT - порт на котором запускается сервер управления агентом. По умолчанию - 8090
-
CFG_AGENT_DEVICES_LOGS_ENABLED - Флаг сбора логов у устройств (devices_logs)
-
CFG_RPC_COMMAND_TIMEOUT - таймаут в секундах для команд на сервер управления агентом. По умолчанию - 60
-
CFG_LOGGING_LEVEL - уровень логирования агента. По умолчанию - INFO
-
CFG_COLLECTOR_SERVICE_BASE - адрес публикации сервиса интеграции (общий порт). По умолчанию - http://127.0.0.1:8080
-
CFG_COLLECTOR_SERVICE_DATA - адрес публикации сервиса интеграции (порт для метрик). По умолчанию - http://127.0.0.1:8084
-
CFG_AGENT_CHECK_CRON - "cron" расписание для отправки состояния агента и получения команд. По умолчанию - */5 * * * *
-
CFG_AGENT_METRICS_UPLOAD_CRON - "cron" расписание для загрузки метрик в сервис интеграции. По умолчанию - 5,20,35,50 * * * *
-
CFG_AGENT_METRICS_UPLOAD_LIMIT - максимальное кол-во передаваемых метрик в запросе в сервис интеграции. По умолчанию - 100
-
CFG_AGENT_METRICS_COLLECT_PASSIVE - "cron" расписание для опроса пассивных устройств. По умолчанию - 0 */1 * * *
-
CFG_AGENT_DEVICES_CRON - "cron" расписание для обновления информации об устройствах от сервиса интеграции. По умолчанию - 0 */1 * * *
-
CFG_AGENT_TOKEN - токен авторизации агента (получение токена агента описано ниже). Значение по умолчанию не задано;
-
CFG_AGENT_HOST_ALIASES - алиасы агента (агентов) для настройки на устройствах: external - адрес, устанавливаемый на устройстве. По умолчанию - []
-
CFG_AGENT_UPGRADE_AUTO - флаг автоматического обновления агента (только windows сборка). По умолчанию - 1
-
CFG_AGENT_UPGRADE_AUTO_CRON - "cron" расписание для автоматического обновления агента. По умолчанию - */30 1-6 * * *
-
CFG_AGENT_UPGRADE_FTP_HOST - адрес фтп сервера для автоматического обновления агента. По умолчанию - localhost:21
-
CFG_AGENT_UPGRADE_FTP_USER - имя пользователя фтп сервера для автоматического обновления агента. По умолчанию не задано
-
CFG_AGENT_UPGRADE_FTP_PASSWORD - пароль фтп сервера для автоматического обновления агента. По умолчанию не задано
-
CFG_AGENT_UPGRADE_FTP_PATH - путь директории на фтп сервере для автоматического обновления агента. По умолчанию - /
-
CFG_AGENT_PERCENT_INCORRECT_DEVICES_FOR_ERROR - процент неактивных устройств, при котором агент отчитается сервису об ошибке. По умолчанию - 50
-
CFG_AGENT_MAX_DEVICE_INACTIVITY_TIMEOUT - максимальное время бездействия активного устройства. По умолчанию - 60
-
CFG_INSTANCE_ID - Опциональный параметр, Id запущенного агента, необходимо при использовании нескольких экземпляров агента (может быть строкой, не использовать кириллицу и пробелы). Важно заполнять этот параметр ДО установки экземпляра агента.
-
CFG_INSTANCE_DESCRIPTION - Опциональный параметр, дополнение к описанию запущенного агента (Отображается в службах, не использовать кириллицу)
При конфигурировании .env файла по дефолту будет использоваться СУБД sqlite, но есть возможность использовать Postgres
- CFG_POSTGRES_MODE - активация использования СУБД PostgreSQL (1 - активно, 0 - используем sqlite)
- CFG_POSTGRES_DB - имя БД
- CFG_POSTGRES_USER - имя пользователя БД
- CFG_POSTGRES_PASSWORD - пароль от БД
- CFG_POSTGRES_PORT - порт для подключения
- CFG_POSTGRES_HOST - хост
Также дополнительные параметры настройки postgres описаны тут
При возникновении следующей ошибки следует проверить логин, пароль и имя самой БД
Для конфигурации режима прокси в .env файле необходимо добавить параметры:
- CFG_PROXY_CRON - */20 * * * * (Раз в какой тайминг перезапускать все соединения)
- CFG_PROXY_HOST - host
- CFG_PROXY_MODE - 1
- CFG_PROXY_PATH - /app/agent.data/key (ssh ключ агента)
- CFG_PROXY_USER - user
Возможна конфигурация агента через веб интерфейс. Такой вид конфигурации доступен только на запущенном агенте.
Для запуска конфигурации необходимо зайти на страницу 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 запускает процесс проверки обновлений.
- Подключение в FTP серверу.
- Адрес сервера: CFG_AGENT_UPGRADE_FTP_HOST:CFG_AGENT_UPGRADE_FTP_HOST
- Логин: CFG_AGENT_UPGRADE_FTP_USER
- Пароль: CFG_AGENT_UPGRADE_FTP_PASSWORD
- Получение списка файлов в папке CFG_AGENT_UPGRADE_FTP_PATH на сервере
- Определение наличия более новых версий агента по полученному списку
- Скачивание дистрибутивов всех новых версий
- Обновление
Настройки агента
-
CFG_AGENT_UPGRADE_AUTO - флаг автоматического обновления агента (только windows сборка). По умолчанию - 1
-
CFG_AGENT_UPGRADE_AUTO_CRON - "cron" расписание для автоматического обновления агента. По умолчанию - */30 1-6 * * *
-
CFG_AGENT_UPGRADE_FTP_HOST - адрес фтп сервера для автоматического обновления агента. По умолчанию - localhost:21
-
CFG_AGENT_UPGRADE_FTP_USER - имя пользователя фтп сервера для автоматического обновления агента. По умолчанию не задано
-
CFG_AGENT_UPGRADE_FTP_PASSWORD - пароль фтп сервера для автоматического обновления агента. По умолчанию не задано
-
CFG_AGENT_UPGRADE_FTP_PATH - путь директории на фтп сервере для автоматического обновления агента. По умолчанию - /
Сборка и публикация дистрибутива
Для сборки дистрибутива необходим python версии 3.11. В корне репозитория агента лежат скрипты для сборки агента
- win_build.bat - скрипт для сборки агента с любого текущего коммита
- win_build_prod.bat - скрипт для сборки продакшен версии агента. работает только в main ветке репозитория
- Запускаем соответствующий скрипт для сборки дистрибутива
- В случае успешной сборки ищем архив с дистрибутивом в папке build (например win_collector.agent_1.1.16.zip)
- Копируем архив с дистрибутивом на 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] |
- Устройство не поддерживает выгрузку исторических данных
- Нет поддержки в текущей реализации (есть ли поддержка на самом устройстве не проверялось)
- Используется только пароль. Имя пользователя всегда 'admin'
- Поддержка мультисенсора
- Есть поддержка мультисенсора на устройстве, но пока не реализовано
- Нет поддержки выгрузки по расписанию (выгружается постоянно)
- Видео поток транслируется через веб сокет. документации по формату не нашел
Механизм восполнения пробелов в метриках
Проблема
Метрики поступают в агент неравномерно. Некоторые устройства не могут прислать метрики из-за проблем с сетью или по причине того что они выключены. Для исключения пробелов в метриках был реализован механизм восполнения пробелов в метриках
Реализация
Для реализации механизма понадобилось переработать хранение метрик в локальной базе агента - удаление метрик после отправки заменил на установку флага синхронизации. Сами метрики хранятся в локальной базе агента в течении N дней (задается в переменной CFG_AGENT_METRICS_AGE_MAX_DAYS).
В механизме используются следующие сущности метрики:
- start_timestamp - начальное время данных метрики
- end_timestamp - конечное время данных метрики
- device_id - id устройства с которого пришла метрика
gap_checker производит анализ метрик в локальной базе
- CHECKER_PERIOD_END - конец промежутка анализируемых метрик - текущий момент
- CHECKER_PERIOD_START - начало промежутка анализируемых метрик. CHECKER_PERIOD_END - N дней (задается в переменной CFG_AGENT_METRICS_CHECK_GAPS_DAYS (по умолчанию = 3))
Промежуток времени не содержит метрики если истинно одно из условий
- если от CHECKER_PERIOD_START минимального start_timestamp нет ни одной метрики
- если от end_timestamp до start_timestamp следующей метрики нет ни одной метрики
Механизм работает следующим образом:
- По расписанию (задается в переменной CFG_AGENT_METRICS_CHECK_GAPS_CRON) запускается функция выявления пробелов (далее gap_checker)
- При CFG_AGENT_METRICS_CHECK_GAPS_ENABLED != 1 выполнение завершается
- Для каждого зарегистрированного (is_new == False) устройства с выключенным пассивным режимом и поддерживающим команду upload_data gap_checker просматривает все метрики в локальной базе за промежуток с CHECKER_PERIOD_START до CHECKER_PERIOD_END.
- Если gap_checker находит промежутки времени, не содержащие ни одной метрики
- Скачивание исторических данных с устройства по каждому промежутку
Поддерживаемые типы метрик устройств
Тип датчика | Форматы |
3dx |
xml - для версий старше 5.3 json - для версий новее 5.3 |
3dv | xml |
3dh | xml |
3db | xml |
3dt | json |
3dm | json |
3dd | json |
Кэширование метрик
В агенте реализовано сохранение метрик в кэш перед записью (Ранее часто встречалась ситуация что метрики в базу пишутся по одному, что замедляло общую работу агента), после включения кэша метрики перед отправкой в БД формируют чанки происходит массовая вставка.
Кэш устанавливается через env файл:
- CFG_DATABASE_CACHE_SIZE=0 (При значении 0 кэш отключен)
Важно!
Размер кэша не следует ставить больше чем 999 (В таком случае возможны ошибки, детальное тестирование с большим размером кэша не проводилось).
Кэш работает только с теми метриками у которых в момент записи включена опция ингорирования дубликатов, т.е. метрика не может перезаписываться. (Соответственно команда upload_data не использует кэширование)