Compartir a través de


Instalación del emulador de Kusto de Azure Data Explorer

Puede instalar el emulador de Kusto de Azure Data Explorer de las maneras siguientes:

  • En su propio dispositivo: considere la posibilidad de usar esta opción si necesita aprovisionar un entorno de desarrollo local.
  • En una máquina virtual (VM) del agente de CI/CD: use esta opción si necesita una canalización de CI/CD para ejecutar pruebas automatizadas.

El emulador está disponible como una imagen de contenedor de Linux y Windows Docker.

En este artículo, aprenderá a:

En este artículo se centra en cómo instalar el contenedor de Docker de Linux en un cliente de Windows.

Requisitos previos

  • El sistema operativo host debe ser uno de los siguientes:

    • Windows Server 2022

    • Windows Server 2019, versión 10.0.17763.2928 o posterior

    • Windows 11

    • Cualquier distribución de Linux que admita el cliente de Docker para Linux

      Importante

      Las distribuciones de Linux solo admiten imágenes de contenedor de Linux.

  • 2 gigabytes (GB) de RAM mínimo; se recomienda usar 4 GB o más

  • Cliente de Docker para linux o Windows

Instalación del emulador de Kusto

Los pasos siguientes son para usar PowerShell para iniciar el emulador mediante la imagen de contenedor del emulador de Kusto. Para ver otras opciones, consulte Ejecutar opciones del emulador.

  1. solo para contenedores de Windows: cambie Docker para que se ejecute con contenedores de Windows. Es posible que tenga que habilitar la característica en la configuración de Docker.

    Captura de pantalla de la configuración de Docker, en la que se muestra la opción Cambiar a contenedores de Windows.

  2. Ejecute el siguiente comando para iniciar el emulador.

    Importante

    La imagen de contenedor del emulador de Kusto es una oferta gratuita en los Términos de licencia de software de Microsoft. Dado que el emulador se ejecuta en un contenedor, debe aceptar los términos de licencia pasando la variable de entorno ACCEPT_EULA al contenedor con su valor establecido en Y.

    Nota:

    • La primera vez que se ejecuta este comando, Docker extrae la imagen de contenedor que tiene varios GB de tamaño y puede tardar varios minutos en descargarse. Una vez descargado, la imagen se almacena en caché y está disponible para las ejecuciones posteriores sin tener que volver a descargarla.
    • Solo para el contenedor de Windows: el contenedor debe ejecutarse en modo de aislamiento de proceso. Este es el valor predeterminado en algunas versiones de Docker. Para otras versiones, puede iniciar el contenedor en modo de aislamiento de Hyper-V agregando --isolation=hyperv al comando run.

    Para iniciar el contenedor de Linux, asegúrese de usar la etiqueta latest o stable:

    docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer-linux:latest
    
  3. Ejecute el comando siguiente para comprobar que el contenedor se está ejecutando.

    docker ps
    

    El comando devuelve una lista de instancias de contenedor en ejecución. Compruebe que la imagen del emulador mcr.microsoft.com/azuredataexplorer/kustainer:latest aparece en la lista.

    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. Ejecute el siguiente comando para comprobar que el emulador de Kusto se está ejecutando. El comando ejecuta la .show cluster consulta en la API de administración y debe devolver un statusCode con el valor 200.

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

    El comando debe devolver algo parecido a:

    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
    

Ejecutar opciones del emulador

Puede usar cualquiera de las siguientes opciones al ejecutar el emulador:

  • Monte una carpeta local en el contenedor: use esta opción para montar una carpeta en el entorno host en el contenedor. El montaje de una carpeta host permite que las consultas interactúen con archivos locales, lo que resulta útil para crear una base de datos persistente entre ejecuciones de contenedor e ingesta de datos.

    Por ejemplo, para montar la carpeta "D:\host\local" en el host en la carpeta "/kustodatadata" en el contenedor, use el siguiente comando en Windows Server:

    docker run -v d:\host\local:/kustodata -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer-linux:latest
    
  • Ejecutar en un puerto diferente: el emulador de Kusto expone el acceso al motor de consulta de Kusto en el puerto 8080; por lo tanto, en otros ejemplos ha asignado el puerto de host 8080 al puerto del emulador 8080. Puede usar esta opción para asignar un host diferente al motor.

    Por ejemplo, para asignar el puerto 9000 en el host al motor, use el siguiente comando en Windows Server:

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

Conexión al emulador

Puede usar cualquiera de las siguientes herramientas para conectarse e interactuar con el emulador:

En las secciones siguientes, usará Kusto.Explorer para crear una base de datos, ingerir datos y consultarlos. Para más información, consulte Uso de Kusto.Explorer.

Importante

El emulador de Kusto no admite la autenticación HTTPS ni Microsoft Entra.

En primer lugar, debe permitir conexiones no seguras en > no seguras.

Captura de pantalla de las opciones de conexión del Explorador de Kusto.

En la imagen siguiente se resaltan los campos afectados en las propiedades Agregar conexión .

  • La conexión de clúster debe comenzar por http:// y no https://por .
  • En Security>Advanced: Connection String, debe quitar la sección AAD Federated Security=True de la cadena de conexión para deshabilitar la autenticación de Microsoft Entra.

Captura de pantalla de la configuración de conexión única de Kusto Explorer.

Creación de una base de datos

Para almacenar datos y ejecutar consultas, cree una base de datos o adjunte el emulador a una base de datos existente.

Una base de datos se puede conservar en una carpeta contenedora o en una carpeta montada. La duración anterior está enlazada al contenedor, por lo que reiniciar el contenedor pierde los cambios. Además, el almacenamiento virtual del contenedor es menos eficaz que el nativo. La carpeta montada permite mantener los datos entre ejecuciones de contenedor.

En este ejemplo, se conservan los datos en el contenedor.

En el modo de consulta de Kusto.Explorer de , ejecute el siguiente comando para crear una base de datos persistente:

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

Este comando requiere que las carpetas aún no existan para evitar la sobreescritura de información existente. Para adjuntar a una base de datos existente, use el siguiente comando en su lugar, especificando la ruta de acceso que termina con md:

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

También es posible desasociar la base de datos del emulador, lo que mantendrá intactos todos los metadatos y datos de la base de datos para poder volver a asociarla en el futuro:

.detach database <YourDatabaseName>

Ingerir datos

Para ingerir datos, primero debe crear una tabla externa vinculada a un archivo y, a continuación, ingerir los datos en una tabla de la base de datos.

Siga los pasos descritos en el ejemplo siguiente para crear una tabla externa e ingerir datos en ella. Como parte del ejemplo, cree un archivo denominado sample.csv en la carpeta local d:\host\local, con los datos siguientes:

Alice, 1
Bob, 2
Carl, 3
  1. Ejecute el comando siguiente para crear una tabla para recibir los datos:

    .create table MyIngestedSample(Name:string, Id:int)
    
  2. Ejecute el siguiente comando para ingerir el archivo en la tabla:

    .ingest into table MyIngestedSample(@"/kustodata/sample.csv")
    

Consultar datos

Puede ver los datos de la tabla mediante la consulta siguiente:

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

Detener el contenedor

  1. Para detener el contenedor, ejecute el comando siguiente para obtener el identificador del contenedor:

    docker ps
    
  2. Ejecute el comando siguiente con el identificador de contenedor:

    docker stop <containerID>