Instalar o emulador kusto do Azure Data Explorer

Pode instalar o emulador do Kusto Data Explorer do Azure das seguintes formas:

  • No seu próprio dispositivo: considere utilizar esta opção se precisar de aprovisionar um ambiente de desenvolvimento local
  • Numa máquina virtual (VM) de agente CI/CD: utilize esta opção se precisar de um pipeline CI/CD para executar testes automatizados

O emulador está disponível como uma imagem de contentor do Docker do Windows ou do Linux .

Neste artigo, vai aprender a:

Pré-requisitos

  • O sistema operativo anfitrião tem de ser um dos seguintes:

    • Windows Server 2022

    • Windows Server 2019 Versão 10.0.17763.2928 ou mais recente

    • Windows 11

    • Qualquer distribuição do Linux que suporte o Cliente do Docker para Linux

      Importante

      As distribuições do Linux só suportam imagens de contentor do Linux.

  • 2 gigabytes (GB) de RAM mínimo; recomendamos que utilize 4 GB ou mais

  • Cliente docker para Windows ou Linux

Instalar o emulador kusto

Os passos seguintes destinam-se à utilização do PowerShell para iniciar o emulador com a imagem de contentor do emulador Kusto. Para obter outras opções, veja Executar opções de emulador.

  1. Apenas para Windows, mude o Docker para ser executado com contentores do Windows. Poderá ter de ativar a funcionalidade nas definições do Docker.

    Captura de ecrã a mostrar as definições do Docker, com a opção Mudar para contentores do Windows.

  2. Execute o seguinte comando para iniciar o emulador.

    Importante

    A imagem de contentor do emulador Kusto é uma oferta gratuita ao abrigo dos Termos de Licenciamento para Software Microsoft. Uma vez que o emulador é executado num contentor, tem de aceitar os termos de licenciamento ao transmitir a variável de ACCEPT_EULA ambiente para o contentor com o respetivo valor definido como Y indicativo.

    Nota

    • Na primeira vez que este comando é executado, o Docker extrai a imagem de contentor que tem vários GBs de tamanho e pode demorar vários minutos a transferir. Depois de transferida, a imagem é colocada em cache e disponível para execuções subsequentes sem ter de a transferir novamente.
    • (Apenas para contentores do Windows) O contentor tem de ser executado no modo de isolamento de processos. Esta é a predefinição em algumas versões do Docker. Para outras versões, pode iniciar o contentor no modo de isolamento do Hyper-V ao adicionar --isolation=hyperv ao comando executar.
    • Para iniciar o contentor do Windows no sistema operativo Windows Server, certifique-se de que utiliza a latest etiqueta ou stable :

      docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:latest
      
    • Para iniciar o contentor do Windows no Windows 11, certifique-se de que utiliza a windows11 etiqueta:

      docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:windows11
      
    • Para iniciar o contentor do Linux:

      docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer-linux:latest
      
  3. Execute o seguinte comando para verificar se o contentor está em execução.

    docker ps
    

    O comando devolve uma lista de instâncias de contentor em execução. Verifique se a imagem do emulador mcr.microsoft.com/azuredataexplorer/kustainer:latest aparece na 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. Execute o seguinte comando para verificar se o emulador kusto está em execução. O comando executa a consulta na API de gestão e deverá devolver um StatusCode com o .show cluster valor 200.

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

    O comando deve devolver algo como:

    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
    

Executar opções de emulador

Pode utilizar qualquer uma das seguintes opções ao executar o emulador:

  • Montar uma pasta local no contentor: utilize esta opção para montar uma pasta no ambiente anfitrião no contentor. Montar uma pasta de anfitrião permite que as consultas interajam com ficheiros locais, o que é útil para criar uma base de dados persistente entre execuções de contentores e ingestão de dados.

    Por exemplo, para montar a pasta "D:\host\local" no anfitrião para a pasta "c:\kustodatadata" no contentor, utilize o comando seguinte no 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
    
  • Executar numa porta diferente: o emulador kusto expõe o acesso ao Motor de Consulta Kusto na porta 8080; por conseguinte, noutros exemplos, mapeou a porta de anfitrião 8080 para a porta do emulador 8080. Pode utilizar esta opção para mapear um anfitrião diferente para o motor.

    Por exemplo, para mapear a porta 9000 no anfitrião para o motor, utilize o seguinte comando no Windows Server:

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

Ligar-se ao emulador

Pode utilizar qualquer uma das seguintes ferramentas para ligar e interagir com o emulador:

Nas secções seguintes, irá utilizar o Kusto.Explorer para criar uma base de dados, ingerir dados e consulta-la. Para saber mais, consulte Utilizar o Kusto.Explorer.

Importante

O Emulador kusto não suporta HTTPS nem autenticação Microsoft Entra.

Primeiro, tem de permitir ligações não seguras nasOpções> de Ferramentas>Ligações>Permitir ligações não seguras.

Captura de ecrã a mostrar as opções de ligação do Kusto Explorer.

A imagem seguinte realça os campos afetados nas propriedades Adicionar ligação .

  • A ligação do Cluster tem de começar com http:// e não https://com .
  • Em Avançadas de Segurança>: Cadeia de Ligação, terá de remover a AAD Federated Security=True parte do cadeia de ligação para desativar Microsoft Entra autenticação.

Captura de ecrã a mostrar a configuração da ligação única do Kusto Explorer.

Criar uma base de dados

Para armazenar dados e executar consultas, crie uma base de dados ou anexe o emulador a uma base de dados existente.

Uma base de dados pode ser mantida numa pasta de contentor ou numa pasta montada. A duração do primeiro está vinculada ao contentor, pelo que reiniciar o contentor perde quaisquer alterações. Além disso, o armazenamento virtual do contentor é menos eficiente do que o nativo. A pasta montada permite-lhe manter os dados entre execuções de contentores.

Neste exemplo, mantemos os dados no contentor.

No modo de Consulta Kusto.Explorer, execute o seguinte comando para criar uma base de dados persistente se utilizar uma imagem de contentor do Windows:

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

O comando equivalente para uma imagem de contentor do Linux é:

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

Este comando requer que as pastas ainda não existam, para impedir a escrita excessiva de informações existentes. Para anexar a uma base de dados existente, utilize o seguinte comando, especificando o caminho que termina com md:

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

Também é possível desanexar a base de dados do emulador, o que manterá intactos todos os metadados e dados da base de dados (para que possa voltar a ligá-la no futuro):

.detach database <YourDatabaseName>

Ingerir dados

Para ingerir dados, primeiro tem de criar uma tabela externa ligada a um ficheiro e, em seguida, ingerir os dados numa tabela na base de dados.

Utilize os passos no exemplo seguinte para criar uma tabela externa e ingerir dados na mesma. Por exemplo, na pasta local c:\kustodata, crie um ficheiro chamado sample.csv com os seguintes dados:

Alice, 1
Bob, 2
Carl, 3
  1. Execute o seguinte comando para criar uma tabela para receber os dados:

    .create table MyIngestedSample(Name:string, Id:int)
    
  2. Execute o seguinte comando para ingerir o ficheiro na tabela:

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

Consultar dados

Pode ver os dados na tabela com a seguinte consulta:

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

Parar o contentor

  1. Pode parar o contentor ao executar o seguinte comando para obter o ID de contentor:

    docker ps
    
  2. Execute o seguinte comando com o ID de contentor:

    docker stop <containerID>