Skip to main content

Kaspersky MLAD: импорт исторических данных

1.            Описание задачи

KasperskyПосле MLADсоздания позволяет пользователю создавать дереводерева активов в Kaspersky MLAD, для своегообучения проекта как вручную через веб-интерфейс программы, такмоделей и автоматизированопроведения путемисторического ипортаинференса файлапотребуется активов.достаточная выборка исторических данных. Данные можно накопить в процессе работы при наличии подключения к источнику данных, например, по протоколу OPC UA. Но наиболее быстрым и предпочтительным способом является импорт данных при помощи встроенного HTTP-коннектора.

Данный документ описывает процесс создания/изменениянастройки активовHTTP-коннектора ви Kasperskyимпорта MLADданных из csv-файла при помощи Excel-таблиц.POST-запросов. 

ЦельДля использованияпередачи данногоcsv-файла в MLAD можно использовать стандартную утилиту, напмример, curl. В данном документа также описан процесс импорта при помощи инструмента csv2http ускорить(предоставляется ипо упроститьзапросу).

процесс

Для созданияработы илипотребуется измененияоперационная активовсистема Linux (в Kasperskyданном MLADдокументе используется Debian 13).

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

image.pngimage.png

2.            Реализация задачи

Первым шагом необходимо в MLAD перейти в Меню администратора, затем-> Системные параметры -> HTTP Connector. Здесь рекомендуется отключить использование TLS-соединения, чтобы упростить процесс настройки Kaspersky MLAD и ввод  его в эусплуатацию. Если в дальнейшем по сооброжения безопасности потребуется перейти на HTTPS-соединение, здесь же можно включить TLS-обратно и подгрузить необходимые сертификаты.

image.png

После этого необходимо запустить HTTP-коннектор в Активы. Нажмите кнопку Экспортировать Активы и теги в файл XLSXСлужбах.

image.pngimage.png

БудетТеперь скачанмы можем отправлять данные в MLAD в виде csv файлов через POST-запросы. Более подробно настройка HTTP-коннектора и загрузка данных описаны в руководстве пользователя.

Csv-файл должен иметь следующую структуру:

mlad_метка времени; имя тега; значение тегаstructure

Метка времени должна быть в формате %Y-%m-%dT%H:%M:%S (или %Y-%m-%d %H:%M:%S).xlsx

Имя тега должно соответствовать имени тега в активах 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-файл (что весьма вероятно), необходимо разбить его на более мелкие файлы и загрузить их по очереди с небольшой задержкой. Можно использовать, к примеру, такой скрипт (запускается из директории, в MSкоторой Excelнаходятся 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).

image.pngimage.png

Перед началом использования утилиты необходимо загрузить локальный docker-образ (укажите корректный путь до tar-файла):

docker load -i /home/mlad-user/Downloads/csv2http/csv2http_docker_image.tar

 

 

Во вкладке directory_types отображаются существующие типы активов. Здесь же можно создать собственные типы активов. Описания полей можно увидеть, наведя мышку на название столбца. Ниже на скриншоте показан процесс добавления двух новых типов активов.

image.png

В поле directory_type укажите название нового типа активов. Поля parameter_label являются не обязательными для заполнения, в них вы можете указать опциональные параметры, которые будут иметь все активы данного типа (например, год выпуска, или рабочее напряжение). В поле description можно задать краткое описание для данного типа активов. Поле directory_type_id не заполняется вручную.

Во вкладке directories можно создать или изменить активы. Ниже на скриншоте показан процесс добавления двух новых активов на основе созданных типов активов:

image.png

В поле directory_type выберите тип создаваемого актива. В поле directory_type_row укажите номер строки, который этот тип имеет во вкладке directory_types (несмотря на то, что в описании столбца указано «не заполнять»). В нашем случае это строки 9 и 10.

В поле directory_name укажите название нового актива.

В поле parent необходимо выбрать имя родителя. Если наш актив располагается в корне дерева, то родителя указывать не нужно. В противном случае просто скопируйте имя нужного актива из столбца directory_name. Если ваш актив находится глубже в структуре дерева, то необходимо здесь указать путь до родительского актива в формате «Родитель 1; Родитель 2; …; Непосредственный родитель». Если в выпадающем списке нужных родителей нет, удалите выпадающий список и заполните поле вручную.

В поле parent необходимо указать номер строки родителя из этой же вкладки (несмотря на то, что в описании столбца указано «не заполнять»). В примере выше, если родителем является Станция 1, то нужно указать его номер строки – 23.

Поля directory_id и parent_id вручную заполнять не нужно.

Во вкладке tags создаются новые или редактируются существующие теги. На скриншоте ниже показан пример создания трех новых тегов (new_tag_1, new_tag_2, new_tag_3).

image.png

В столбце tag_id необходимо продолжить нумерацию после последнего существующего тега для всех новых тегов (несмотря на то, что в описании столбца указано «не заполнять»). Нумерация не обязательно должна быть непрерывной, вы можете задавать id по своему усмотрению, но у каждого тега в активах MLAD должен быть свой уникальный id.

В поле tag_description указывается описание / проектное наименование тега, с которым он потом будет отображаться в инструментах MLAD.

В поле parent необходимо указать путь до родительского актива по тому же принципу, как мы уже сделали это во вкладке directories.

В поле parent_row укажите номер строки родительского актива во вкладке directories (несмотря на то, что в описании столбца указано «не заполнять»). В нашем случае это строки 24 и 25.

Поле parent_id вручную заполнять не нужно.

Остальные поля заполняются по желанию / необходимости.

После заполнения файла сохраните его и вернитесь в MLAD в раздел активов.

image.png

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

image.png

После чего нажмите кнопку Сохранить. Если импорт прошел успешно, появится зеленая плашка с соответствующим уведомлением, и в вашем дереве активов появятся новые активы и теги.

image.png

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