Установка эмулятора Azure Data Explorer Kusto

Эмулятор Azure Data Explorer Kusto можно установить следующими способами:

  • На своем устройстве: рассмотрите возможность использования этого параметра, если необходимо подготовить локальную среду разработки.
  • На виртуальной машине агента CI/CD. Используйте этот параметр, если требуется конвейер CI/CD для выполнения автоматических тестов.

Эмулятор доступен в виде образа контейнера Docker для Windows или Linux .

В этой статье вы узнаете, как выполнять следующие задачи.

Предварительные требования

  • Операционная система узла должна быть одной из следующих:

    • Windows Server 2022

    • Windows Server 2019 версии 10.0.17763.2928 или более поздней версии

    • Windows 11

    • Любой дистрибутив Linux, поддерживающий клиент Docker для Linux

      Важно!

      Дистрибутивы Linux поддерживают только образы контейнеров Linux.

  • Минимум 2 гигабайта (ГБ) ОЗУ; Рекомендуется использовать 4 ГБ или более

  • Клиент Docker для Windows или Linux

Установка эмулятора Kusto

Ниже описано, как использовать PowerShell для запуска эмулятора с помощью образа контейнера эмулятора Kusto. Другие параметры см. в разделе Параметры запуска эмулятора.

  1. Только для Windows переключите Docker на запуск с контейнерами Windows. Возможно, потребуется включить эту функцию в параметрах Docker.

    Снимок экрана: параметры Docker с параметром

  2. Выполните следующую команду, чтобы запустить эмулятор.

    Важно!

    Образ контейнера эмулятора Kusto является бесплатным предложением в соответствии с условиями лицензионного соглашения на использование программного обеспечения Майкрософт. Так как эмулятор работает в контейнере, необходимо принять условия лицензии, передав ACCEPT_EULA в контейнер переменную среды со значением Y , равным .

    Примечание

    • При первом выполнении этой команды Docker извлекает образ контейнера, размер которого составляет несколько ГБ, и скачивание может занять несколько минут. После скачивания образ кэшируется и доступен для последующих запусков без необходимости скачивать его снова.
    • (Только для контейнера Windows) Контейнер должен выполняться в режиме изоляции процессов. Это значение по умолчанию для некоторых версий Docker. Для других версий контейнер можно запустить в режиме изоляции Hyper-V, добавив --isolation=hyperv в команду run.
    • Чтобы запустить контейнер Windows в операционной системе latest Windows Server, используйте тег или stable :

      docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:latest
      
    • Чтобы запустить контейнер Windows на Windows 11, используйте windows11 тег :

      docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:windows11
      
    • Чтобы запустить контейнер Linux, выполните следующие действия.

      docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer-linux:latest
      
  3. Выполните следующую команду, чтобы убедиться, что контейнер запущен.

    docker ps
    

    Команда возвращает список запущенных экземпляров контейнеров. Убедитесь, что образ эмулятора mcr.microsoft.com/azuredataexplorer/kustainer:latest отображается в списке.

    CONTAINER ID   IMAGE                                                  COMMAND                  CREATED          STATUS          PORTS                    NAMES
    a8b51bce21ad   mcr.microsoft.com/azuredataexplorer/kustainer:latest   "powershell -Command¦"   11 minutes ago   Up 10 minutes   0.0.0.0:8080->8080/tcp   contoso
    
  4. Выполните следующую команду, чтобы убедиться, что эмулятор Kusto запущен. Команда выполняет запрос к .show cluster API управления и возвращает код состояния со значением 200.

    Invoke-WebRequest -Method post -ContentType 'application/json' -Body '{"csl":".show cluster"}' http://localhost:8080/v1/rest/mgmt
    

    Команда должна возвращать примерно следующее:

    StatusCode        : 200
    StatusDescription : OK
    Content           : {"Tables":[{"TableName":"Table_0","Columns":[{"ColumnName":"NodeId","DataType":"String","ColumnType":"string"},{"ColumnName":"Address","DataType":"St
                        ring","ColumnType":"string"},{"ColumnName":"Name","...
    RawContent        : HTTP/1.1 200 OK
                        Transfer-Encoding: chunked
                        x-ms-client-request-id: unspecified;d239f3aa-7df0-4e46-af0a-edd7139d0511
                        x-ms-activity-id: a0ac8941-7e4c-4176-98fa-b7ebe14fae90
                        Content-Type: application...
    Forms             : {}
    Headers           : {[Transfer-Encoding, chunked], [x-ms-client-request-id, unspecified;d239f3aa-7df0-4e46-af0a-edd7139d0511], [x-ms-activity-id,
                        a0ac8941-7e4c-4176-98fa-b7ebe14fae90], [Content-Type, application/json]...}
    Images            : {}
    InputFields       : {}
    Links             : {}
    ParsedHtml        : System.__ComObject
    RawContentLength  : 988
    

Параметры запуска эмулятора

При запуске эмулятора можно использовать любой из следующих вариантов:

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

    Например, чтобы подключить папку "D:\host\local" на узле к папке "c:\kustodatadata" в контейнере, используйте следующую команду в Windows Server:

    docker run -v d:\host\local:c:\kustodata -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:latest
    
  • Запуск на другом порту: эмулятор Kusto предоставляет доступ к обработчику запросов Kusto через порт 8080; поэтому в других примерах порт узла 8080 сопоставляется с портом эмулятора 8080. Этот параметр можно использовать для сопоставления другого узла с подсистемой.

    Например, чтобы сопоставить порт 9000 на узле с подсистемой, используйте следующую команду в Windows Server:

    docker run -e ACCEPT_EULA=Y -m 4G -d -p 9000:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:latest
    

Подключение к эмулятору

Для подключения к эмулятору и взаимодействия с ним можно использовать любой из следующих средств:

В следующих разделах вы будете использовать Kusto. Обозреватель создавать базу данных, принимать данные и запрашивать их. Дополнительные сведения см. в статье Использование Kusto.Обозреватель.

Важно!

Эмулятор Kusto не поддерживает проверку подлинности HTTPS или Microsoft Entra.

Сначала необходимо разрешить небезопасные подключения в разделе Сервис>Параметры>Подключения>Разрешить небезопасные подключения.

Снимок экрана: параметры подключения kusto Обозреватель.

На следующем рисунке выделены затронутые поля в разделе Добавление свойств подключения .

  • Подключение к кластеру должно начинаться с http:// , а не https://.
  • >Чтобы отключитьпроверку подлинностиMicrosoft Entra, необходимо удалить AAD Federated Security=True часть строка подключения.

Снимок экрана: настройка kusto Обозреватель одноразового подключения.

Создание базы данных

Для хранения данных и выполнения запросов создайте базу данных или подключите эмулятор к существующей базе данных.

База данных может быть сохранена в папке контейнера или в подключенной папке. Время существования первого привязано к контейнеру, поэтому при перезапуске контейнера будут потеряны все изменения. Кроме того, виртуальное хранилище контейнера менее эффективно, чем собственное хранилище. Подключенная папка позволяет хранить данные между запусками контейнера.

В этом примере данные хранятся в контейнере.

В Kusto.Обозреватель В режиме запроса выполните следующую команду, чтобы создать постоянную базу данных при использовании образа контейнера Windows:

.create database <YourDatabaseName> persist (
  @"c:\kustodata\dbs\<YourDatabaseName>\md",
  @"c:\kustodata\dbs\<YourDatabaseName>\data"
  )

Эквивалентная команда для образа контейнера Linux:

.create database <YourDatabaseName> persist (
  @"/kustodata/dbs/<YourDatabaseName>/md",
  @"/kustodata/dbs/<YourDatabaseName>/data"
  )

Для выполнения этой команды требуется, чтобы папки еще не существовали, чтобы предотвратить чрезмерную запись существующих данных. Чтобы подключиться к существующей базе данных, используйте следующую команду, указав путь, заканчивающийся на md:

.attach database <YourDatabaseName> from @"<PathToMdFolder>"

Кроме того, можно отсоединить базу данных от эмулятора, чтобы сохранить все метаданные и данные базы данных без изменений (чтобы вы могли повторно подключиться к ней в будущем):

.detach database <YourDatabaseName>

Прием данных

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

Выполните действия, описанные в следующем примере, чтобы создать внешнюю таблицу и принять в нее данные. Например, в локальной папке c:\kustodata создайте файл sample.csv со следующими данными:

Alice, 1
Bob, 2
Carl, 3
  1. Выполните следующую команду, чтобы создать таблицу для получения данных:

    .create table MyIngestedSample(Name:string, Id:int)
    
  2. Выполните следующую команду, чтобы принять файл в таблицу:

    .ingest into table MyIngestedSample(@"c:\kustodata\sample.csv")
    

Данные запросов

Данные в таблице можно просмотреть с помощью следующего запроса:

MyIngestedSample
| summarize sum(Id), avg(Id)

Остановка контейнера

  1. Вы можете остановить контейнер, выполнив следующую команду, чтобы получить идентификатор контейнера:

    docker ps
    
  2. Выполните следующую команду с идентификатором контейнера:

    docker stop <containerID>