Azure Data Explorer Kusto エミュレーターをインストールする

Azure Data Explorer Kusto エミュレーターは、次の方法でインストールできます。

  • 独自のデバイス: ローカル開発環境をプロビジョニングする必要がある場合は、このオプションの使用を検討してください
  • CI/CD エージェント仮想マシン (VM): 自動テストを実行するために CI/CD パイプラインが必要な場合は、このオプションを使用します

エミュレーターは、 Windows または Linux Docker コンテナー イメージとして使用できます。

この記事では、次の方法について学習します。

前提条件

  • ホスト オペレーティング システムは、次のいずれかである必要があります。

    • Windows Server 2022

    • Windows Server 2019 バージョン 10.0.17763.2928 以降

    • Windows 11

    • Docker Client for Linux をサポートする Linux ディストリビューション

      重要

      Linux ディストリビューションでは、Linux コンテナー イメージのみがサポートされます。

  • 最小 2 ギガバイト (GB) の RAM。4 GB 以上を使用することをお勧めします

  • Docker Client for Windows または Linux

Kusto エミュレーターをインストールする

次の手順は、PowerShell を使用して Kusto エミュレーター コンテナー イメージを使用してエミュレーターを起動するための手順です。 その他のオプションについては、「 エミュレーター オプションを実行する」を参照してください。

  1. Windows の場合のみ、Windows コンテナーで実行するように Docker を切り替えます。 Docker 設定でこの機能を有効にする必要がある場合があります。

    [Windows コンテナーに切り替える] オプションを示す Docker 設定のスクリーンショット。

  2. 次のコマンドを実行してエミュレーターを起動します。

    重要

    Kusto エミュレーター コンテナー イメージは、 Microsoft ソフトウェア ライセンス条項に基づく無料のオファリングです。 エミュレーターはコンテナーで実行されるため、環境変数を コンテナーに渡 ACCEPT_EULA し、その値を を 示す値に設定して、ライセンス条項に同意する Y 必要があります。

    注意

    • このコマンドを初めて実行すると、Docker はサイズが数 GB のコンテナー イメージをプルし、ダウンロードに数分かかる場合があります。 ダウンロードされると、イメージはキャッシュされ、再度ダウンロードしなくても後続の実行に使用できます。
    • (Windows コンテナーの場合のみ)コンテナーはプロセス分離モードで実行する必要があります。 これは、一部のバージョンの Docker の既定値です。 他のバージョンの場合は、run コマンドに を追加 --isolation=hyperv することで、Hyper-V 分離モードでコンテナーを開始できます。
    • Windows Server オペレーティング システムで Windows コンテナーを起動するには、 または stable タグをlatest使用していることを確認します。

      docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:latest
      
    • Windows 11で Windows コンテナーを起動するには、 タグを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 エミュレーターが実行されていることを確認します。 このコマンドは、管理 API に.show cluster対してクエリを実行し、値 200StatusCode を返す必要があります。

    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 エミュレーターは、ポート 8080 の Kusto クエリ エンジンへのアクセスを公開します。そのため、他の例では、ホスト ポート 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 Emulator では、HTTPS またはMicrosoft Entra認証はサポートされていません。

最初に、[ツール>] [オプション][接続] [安全でない接続を許可する]>> で安全でない接続を許可する必要があります。

Kusto エクスプローラー接続オプションのスクリーンショット。

次の図では、[ 接続の追加] プロパティの影響を受けるフィールドが強調表示されています。

  • クラスター接続は、 ではなく https://http://始まる必要があります。
  • [セキュリティ>の詳細設定: 接続文字列] で、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. コンテナー ID を取得するには、次のコマンドを実行してコンテナーを停止できます。

    docker ps
    
  2. コンテナー ID で次のコマンドを実行します。

    docker stop <containerID>