Kaspersky MLAD: импорт исторических данных
1. Описание задачи
После создания дерева активов в Kaspersky MLAD, для обучения моделей и проведения исторического инференса потребуется достаточная выборка исторических данных. Данные можно накопить в процессе работы при наличии подключения к источнику данных, например, по протоколу OPC UA. Но наиболее быстрым и предпочтительным способом является импорт данных при помощи встроенного HTTP-коннектора.
Данный документ описывает процесс настройки HTTP-коннектора и импорта данных из csv-файла при помощи POST-запросов.
Для передачи csv-файла в MLAD можно использовать стандартную утилиту, напмример, curl. В данном документа также описан процесс импорта при помощи инструмента csv2http (предоставляется по запросу).
Для работы потребуется операционная система Linux (в данном документе используется Debian 13).
Ниже приведена упрощенная схема подключения, используемая в описываемой в данном документе интеграции.
2. Реализация задачи
Первым шагом необходимо в MLAD перейти в Меню администратора -> Системные параметры -> HTTP Connector. Здесь рекомендуется отключить использование TLS-соединения, чтобы упростить процесс настройки Kaspersky MLAD и ввод его в эусплуатацию. Если в дальнейшем по сооброжения безопасности потребуется перейти на HTTPS-соединение, здесь же можно включить TLS-обратно и подгрузить необходимые сертификаты.
После этого необходимо запустить HTTP-коннектор в Службах.
Теперь мы можем отправлять данные в MLAD в виде csv файлов через POST-запросы. Более подробно настройка HTTP-коннектора и загрузка данных описаны в руководстве пользователя.
Csv-файл должен иметь следующую структуру:
метка времени; имя тега; значение тега
Метка времени должна быть в формате %Y-%m-%dT%H:%M:%S (или %Y-%m-%d %H:%M:%S).
Имя тега должно соответствовать имени тега в активах MLAD.
Если значение тега содержит дробную часть, используйте точку при отделении целой и дробной частей.
Файл не должен содержать заголовочную строку (строку с названием столбцов).
Пример содержимого файла:
2026-01-12 11:00:00;N;11.10
2026-01-12 08:00:00;N;11.240
Пример отправки CSV-файла в MLAD через curl по протоколу методом POST на порт 4999 сервера Kaspersky MLAD:
curl -F "file=@<имя файла>.csv" -X POST "http://<IP-адрес или доменное имя сервера Kaspersky MLAD>:4999/upload"
Не рекомендуется загружать файлы размером более 10-20 МБ. Это может привести к потере отдельных точек данных при загрузке. Если вы хотите загрузить большой csv-файл (что весьма вероятно), необходимо разбить его на более мелкие файлы и загрузить их по очереди с небольшой задержкой. Можно использовать, к примеру, такой скрипт (запускается из директории, в которой находятся csv-файлы:
#!/bin/bash
# Укажите адрес вашего сервера
SERVER_URL="localhost:4999/upload"
# Перебор всех csv-файлов в директории
for file in *.csv; do
# Завершение скрипта, если csv-файлы не найдены
[ -e "$file" ] || { echo "No CSV files found."; exit 0; }
echo "Uploading $file to $SERVER_URL ..."
# Отправка файла в MLAD через POST-запрос
curl -X POST -F "file=@$file" "$SERVER_URL"
sleep 0.5
echo
done
Данный метод загрузки данных с одной стороны является достаточно простым и не требует использования дополнительных инструментов, но с другой стороны накладывает жесткие ограничения на формат и размер загружаемого csv-файла.
Альтернативно можно использовать инструмент csv2http (предоставляется по запросу). Для его запуска на машине потребуется установленный docker и docker-compose (можно запускать на машине с MLAD).
Перед началом использования утилиты необходимо загрузить локальный docker-образ (укажите корректный путь до tar-файла):
docker load -i /home/mlad-user/Downloads/csv2http/csv2http_docker_image.tar
Во вкладке directory_types отображаются существующие типы активов. Здесь же можно создать собственные типы активов. Описания полей можно увидеть, наведя мышку на название столбца. Ниже на скриншоте показан процесс добавления двух новых типов активов.
В поле directory_type укажите название нового типа активов. Поля parameter_label являются не обязательными для заполнения, в них вы можете указать опциональные параметры, которые будут иметь все активы данного типа (например, год выпуска, или рабочее напряжение). В поле description можно задать краткое описание для данного типа активов. Поле directory_type_id не заполняется вручную.
Во вкладке directories можно создать или изменить активы. Ниже на скриншоте показан процесс добавления двух новых активов на основе созданных типов активов:
В поле directory_type выберите тип создаваемого актива. В поле directory_type_row укажите номер строки, который этот тип имеет во вкладке directory_types (несмотря на то, что в описании столбца указано «не заполнять»). В нашем случае это строки 9 и 10.
В поле directory_name укажите название нового актива.
В поле parent необходимо выбрать имя родителя. Если наш актив располагается в корне дерева, то родителя указывать не нужно. В противном случае просто скопируйте имя нужного актива из столбца directory_name. Если ваш актив находится глубже в структуре дерева, то необходимо здесь указать путь до родительского актива в формате «Родитель 1; Родитель 2; …; Непосредственный родитель». Если в выпадающем списке нужных родителей нет, удалите выпадающий список и заполните поле вручную.
В поле parent необходимо указать номер строки родителя из этой же вкладки (несмотря на то, что в описании столбца указано «не заполнять»). В примере выше, если родителем является Станция 1, то нужно указать его номер строки – 23.
Поля directory_id и parent_id вручную заполнять не нужно.
В столбце tag_id необходимо продолжить нумерацию после последнего существующего тега для всех новых тегов (несмотря на то, что в описании столбца указано «не заполнять»). Нумерация не обязательно должна быть непрерывной, вы можете задавать id по своему усмотрению, но у каждого тега в активах MLAD должен быть свой уникальный id.
В поле tag_description указывается описание / проектное наименование тега, с которым он потом будет отображаться в инструментах MLAD.
В поле parent необходимо указать путь до родительского актива по тому же принципу, как мы уже сделали это во вкладке directories.
В поле parent_row укажите номер строки родительского актива во вкладке directories (несмотря на то, что в описании столбца указано «не заполнять»). В нашем случае это строки 24 и 25.
Поле parent_id вручную заполнять не нужно.
Остальные поля заполняются по желанию / необходимости.
После заполнения файла сохраните его и вернитесь в MLAD в раздел активов.
Нажмите кнопку Импортировать активы и теги из файла XLSX. В появившемся окне выберите ваш файл с активами для загрузки остальные настройки как показано на скриншоте ниже:
После чего нажмите кнопку Сохранить. Если импорт прошел успешно, появится зеленая плашка с соответствующим уведомлением, и в вашем дереве активов появятся новые активы и теги.
Данные теги доступны для использования во всех инструментах MLAD, в том числе в моделях, разметках и коннекторах.









