Partilhar via


Tarefa Azure DevOps para o Azure Data Explorer

Os Serviços de DevOps do Azure fornecem ferramentas de colaboração de desenvolvimento, como pipelines de alto desempenho, repositórios Git privados gratuitos, quadros Kanban configuráveis e amplos recursos de testes automatizados e contínuos. O Azure Pipelines é um recurso de DevOps do Azure que permite gerenciar CI/CD para implantar seu código com pipelines de alto desempenho que funcionam com qualquer idioma, plataforma e nuvem. Azure Data Explorer - Ferramentas de Pipeline é a tarefa do Azure Pipelines que permite criar pipelines de liberação e implantar suas alterações de banco de dados em seus bancos de dados do Azure Data Explorer. Ele está disponível gratuitamente no Visual Studio Marketplace. A extensão inclui as seguintes tarefas básicas:

  • Comando Azure Data Explorer - Execute comandos admin em um cluster do Azure Data Explorer

  • Consulta do Azure Data Explorer - Execute consultas em um cluster do Azure Data Explorer e analise os resultados

  • Porta do servidor de consulta do Azure Data Explorer - Tarefa sem agente para controlar lançamentos, dependendo do resultado da consulta

    Captura de tela dos tipos de tarefas disponíveis na extensão Ferramentas de Pipeline.

Este documento descreve um exemplo simples de como usar a tarefa Azure Data Explorer - Ferramentas de Pipeline para implantar alterações de esquema em seu banco de dados. Para obter pipelines de CI/CD completos, consulte a documentação do Azure DevOps.

Pré-requisitos

Prepare seu conteúdo para lançamento

Você pode usar os seguintes métodos para executar comandos admin em um cluster dentro de uma tarefa:

Captura de tela mostrando as opções de controle do código-fonte do comando.

  • Use um padrão de pesquisa para obter vários arquivos de comando de uma pasta do agente local (criar fontes ou liberar artefatos).

    Captura de tela mostrando a opção de pasta local.

  • Escreva comandos em linha.

    Captura de tela mostrando a opção de comando embutido.

  • Especifique um caminho de arquivo para obter arquivos de comando diretamente do controle de origem do Git (recomendado).

    Captura de tela mostrando a opção de arquivos de controle do código-fonte git.

    Crie as seguintes pastas de exemplo (Funções, Políticas, Tabelas) no repositório Git. Copie os arquivos do repositório de amostras para as respetivas pastas e confirme as alterações. Os arquivos de exemplo são fornecidos para executar o fluxo de trabalho a seguir.

    Captura de tela mostrando as pastas a serem criadas no repositório.

    Sugestão

    Ao criar seu próprio fluxo de trabalho, recomendamos tornar seu código idempotente. Por exemplo, use .create-merge table em vez de .create table, e use a .create-or-alter função em vez da .create função.

Criar um pipeline de lançamento

  1. Entre na sua organização do Azure DevOps.

  2. Selecione Pipelines>Releases no menu à esquerda e, em seguida, selecione New pipeline.

    Captura de tela mostrando como iniciar um novo pipeline.

  3. A janela Novo pipeline de liberação é aberta. Na guia Pipelines , no painel Selecionar um modelo , selecione Trabalho vazio.

    Captura de tela mostrando como selecionar um modelo.

  4. Selecione o botão Etapa. No painel Palco , adicione o Nome do palco e selecione Salvar para salvar o pipeline.

    Captura de ecrã mostrando como nomear o estágio do pipeline.

  5. Selecione o botão Adicionar um artefato. No painel Adicionar um artefato , selecione o repositório onde o código existe, preencha as informações relevantes e selecione Adicionar. Selecione Salvar para salvar seu pipeline.

    Captura de ecrã mostrando como adicionar um artefato.

  6. Na guia Variáveis , selecione + Adicionar para criar uma variável para a URL do Ponto Final usada na tarefa. Insira o Nome e o Valor do ponto de extremidade e selecione Salvar para salvar seu pipeline.

    Captura de tela mostrando como criar uma variável de pipeline.

    Para localizar a URL do ponto final, vá para a página de visão geral do cluster do Azure Data Explorer no portal do Azure e copie o URI do cluster. Construa a variável URI no seguinte formato https://<ClusterURI>?DatabaseName=<DBName>. Por exemplo, https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB

    Captura de tela mostrando como adicionar um valor para o URI do cluster do Azure Data Explorer.

Criar uma tarefa para implantar as pastas

  1. Na guia Pipeline , selecione 1 trabalho, 0 tarefa para adicionar tarefas.

    Captura de tela mostrando a adição de uma tarefa ao pipeline.

  2. Repita as seguintes etapas para criar tarefas de comando para implantar arquivos das pastas Tabelas, Funções e Políticas :

    Captura de ecrã a mostrar como adicionar um comando de administração do Azure Data Explorer.

    1. Na guia Tarefas , selecione + por trabalho do agente e procure o Azure Data Explorer.

    2. Em Executar Comando do Azure Data Explorer, selecione Adicionar.

    3. Selecione Kusto Command e atualize a tarefa com as seguintes informações:

      • Nome para exibição: nome da tarefa. Por exemplo, Deploy <FOLDER> onde <FOLDER> é o nome da pasta para a tarefa de implantação que você está criando.

      • Caminho do arquivo: Para cada pasta, especifique o caminho como */<FOLDER>/*.csl onde <FOLDER> está a pasta relevante para a tarefa.

      • URL do ponto de extremidade: especifique a EndPoint URL variável criada na etapa anterior.

      • Usar ponto de extremidade de serviço: selecione esta opção.

      • Ponto de extremidade de serviço: selecione um ponto de extremidade de serviço existente ou crie um novo (+ Novo) fornecendo as seguintes informações na janela Adicionar conexão de serviço do Azure Data Explorer :

        Configuração Valor sugerido
        Método de autenticação Configurar Credenciais de Identidade Federada (FIC) (recomendado) ou selecionar Autenticação de Principal de Serviço (SPA).
        Nome da conexão Insira um nome para identificar esse ponto de extremidade de serviço
        Cluster Url O valor pode ser encontrado na seção de visão geral do seu Cluster do Azure Data Explorer no portal do Azure
        ID do principal de serviço Insira a ID do aplicativo Microsoft Entra (criada como pré-requisito)
        Chave do aplicativo principal do serviço Insira a chave do aplicativo Microsoft Entra (criada como pré-requisito)
        ID do locatário Microsoft Entra Insira seu locatário do Microsoft Entra (como microsoft.com ou contoso.com)

      Marque a caixa de seleção Permitir que todos os pipelines usem esta conexão e selecione OK.

      Captura de ecrã a mostrar como adicionar uma ligação de serviço.

  3. Selecione Salvar e, na guia Tarefas , verifique se há três tarefas: Implantar Tabelas, Implantar Funções e Implantar Políticas.

    Captura de tela mostrando como implantar todas as pastas.

Criar uma tarefa de Consulta

Se necessário, crie uma tarefa para executar uma consulta no cluster. A execução de consultas em um pipeline de compilação ou liberação pode ser usada para validar um conjunto de dados e fazer com que uma etapa seja bem-sucedida ou falhada com base nos resultados da consulta. Os critérios de sucesso das tarefas podem ser baseados em um limite de contagem de linhas ou em um único valor, dependendo do que a consulta retorna.

  1. Na guia Tarefas , selecione + por trabalho do agente e procure o Azure Data Explorer.

  2. Em Executar Consulta do Azure Data Explorer, selecione Adicionar.

  3. Selecione Kusto Query e atualize a tarefa com as seguintes informações:

    • Nome para exibição: nome da tarefa. Por exemplo, cluster de consulta.
    • Tipo: Selecione Inline.
    • Consulta: introduza a consulta que pretende executar.
    • URL do ponto de extremidade: especifique a EndPoint URL variável criada anteriormente.
    • Usar ponto de extremidade de serviço: selecione esta opção.
    • Ponto de extremidade de serviço: selecione um ponto de extremidade de serviço.

    Captura de ecrã a mostrar como criar uma tarefa de consulta.

  4. Em Resultados da Tarefa, selecione os critérios de sucesso da tarefa com base nos resultados da sua consulta, da seguinte forma:

    • Se sua consulta retornar linhas, selecione Contagem de linhas e forneça os critérios necessários.

      Captura de tela mostrando que a consulta retorna linhas e define os limites de contagem de linhas.

    • Se a consulta retornar um valor, selecione Valor único e forneça o resultado esperado.

      Captura de tela mostrando que a consulta retorna um único valor e define o valor esperado.

Criar uma tarefa de Gateway do Servidor de Consultas

Se necessário, crie uma tarefa para executar uma consulta em um cluster e condicione o progresso da liberação à contagem de linhas dos resultados da consulta pendentes. A tarefa Porta de Consulta do Servidor é um trabalho sem agente, o que significa que a consulta é executada diretamente no Servidor de DevOps do Azure.

  1. Na guia Tarefas , selecione + por trabalho sem agente e procure o Azure Data Explorer.

  2. Na opção Executar Gateway do Servidor de Consultas do Azure Data Explorer, selecione Adicionar.

  3. Selecione Kusto Query Server Gate e, em seguida, selecione Server Gate Test.

    Captura de tela mostrando como selecionar uma tarefa do Portão do Servidor.

  4. Configure a tarefa fornecendo as seguintes informações:

    • Nome para exibição: Nome do portão.
    • Ponto de extremidade de serviço: selecione um ponto de extremidade de serviço.
    • Nome do banco de dados: especifique o nome do banco de dados.
    • Tipo: Selecione Consulta embutida.
    • Consulta: introduza a consulta que pretende executar.
    • Limite máximo: especifique a contagem máxima de linhas para os critérios de êxito da consulta.

    Captura de tela mostrando como configurar uma tarefa do Portão do Servidor.

Observação

Você deve ver resultados como os seguintes ao executar a versão.

Captura de ecrã a mostrar um exemplo de resultados de tarefas da Porta de Consulta.

Executar o lançamento

  1. Selecione + Versão>Criar versão para iniciar uma versão.

    Imagem do ecrã mostrando como efetuar uma publicação.

  2. Na guia Logs , verifique se o status da implantação foi bem-sucedido.

    Captura de tela mostrando uma implantação bem-sucedida.

A criação de um pipeline de lançamento para implantação na pré-produção está concluída.

Suporte de autenticação sem chave para tarefas de DevOps do Azure Data Explorer

A extensão dá suporte à autenticação sem chave para clusters do Azure Data Explorer. A autenticação sem chave permite autenticar em clusters do Azure Data Explorer sem usar uma chave. É mais seguro e mais fácil de gerir.

Usar a autenticação FIC (Federated Identity Credentials) em uma conexão de serviço do Azure Data Explorer

  1. Na sua instância de DevOps, vá para Configurações> do ProjetoConexões> de serviçoNova conexão>de serviço Azure Data Explorer.

  2. Selecione Credenciais de Identidade Federada, insira a URL do cluster, a ID da entidade de serviço, a ID do locatário, um nome de conexão de serviço e selecione Salvar.

  3. No portal do Azure, abra o aplicativo Microsoft Entra para a entidade de serviço especificada.

  4. Em Certificados e segredos, selecione Credenciais federadas.

    Captura de ecrã a mostrar o separador de credenciais federadas da aplicação Microsoft Entra.

  5. Selecione Adicionar credencial e, em seguida, para Cenário de credenciais federadas, selecione Outro emissor e preencha as configurações usando as seguintes informações:

    • Emissor: <https://vstoken.dev.azure.com/{System.CollectionId}> onde {System.CollectionId} é a ID de coleção da sua organização do Azure DevOps. Você pode encontrar o ID da coleção das seguintes maneiras:

      • No pipeline de versão clássica do Azure DevOps, selecione Inicializar trabalho. O ID da coleção é exibido nos logs.
    • Identificador de assunto: <sc://{DevOps_Org_name}/{Project_Name}/{Service_Connection_Name}> onde {DevOps_Org_name} é o nome da organização do Azure DevOps, {Project_Name} é o nome do projeto e {Service_Connection_Name} é o nome da conexão de serviço que você criou anteriormente.

      Observação

      Se houver espaço no nome da conexão de serviço, você poderá usá-lo com o espaço no campo. Por exemplo: sc://MyOrg/MyProject/My Service Connection.

    • Nome: insira um nome para a credencial.

    Captura de tela mostrando como criar uma nova conexão de serviço com credenciais de identidade federada.

  6. Selecione Adicionar.

Usar credenciais de identidade federada ou identidade gerenciada em uma conexão de serviço do Azure Resource Manager (ARM)

  1. Na sua instância de DevOps, vá para Configurações> do ProjetoConexões> de serviçoNova conexão> de serviçoAzure Resource Manager.

    Captura de ecrã a mostrar como adicionar uma ligação de serviço do Azure Resource Monitor.

  2. Em Método de autenticação, selecione Federação de Identidades de Carga de Trabalho (automática) para continuar. Você também pode usar a opção manual Workload Identity Federation (manual) para especificar os detalhes da Workload Identity Federation ou a opção Managed Identity . Saiba mais sobre como configurar uma identidade gerenciada usando o Gerenciamento de Recursos do Azure em Conexões de Serviço do Azure Resource Manager (ARM).

    Captura de ecrã a mostrar a opção de autenticação para uma ligação de serviço do Azure Resource Monitor

  3. Preencha os detalhes necessários, selecione Verificar e, em seguida, selecione Guardar.

Configuração de pipeline YAML

Você pode configurar tarefas usando a interface do usuário da Web do Azure DevOps ou o código YAML dentro do esquema de pipeline.

Exemplo de comando Admin

steps:
- task: Azure-Kusto.PublishToADX.PublishToADX.PublishToADX@4
  displayName: '<Task Name>'
  inputs:
    targetType: 'inline'
    script: '<inline Script>'
    waitForOperation: true
    kustoUrls: '$(CONNECTIONSTRING):443?DatabaseName=""'
    authType: 'armserviceconn'
    connectedServiceARM: '<ARM Service Endpoint Name>'
    serialDelay: 1000
  `continueOnError: true`
  condition: ne(variables['ProductVersion'], '') ## Custom condition Sample

Exemplo de consulta

steps:
- task: Azure-Kusto.PublishToADX.ADXQuery.ADXQuery@4
  displayName: '<Task Display Name>'
  inputs:
    targetType: 'inline'
    script: |
     let badVer=
     RunnersLogs | where Timestamp > ago(30m)
         | where EventText startswith "$$runnerresult" and Source has "ShowDiagnostics"
         | extend State = extract(@"Status='(.*)', Duration.*",1, EventText)
         | where State == "Unhealthy"
         | extend Reason = extract(@'"NotHealthyReason":"(.*)","IsAttentionRequired.*',1, EventText)
         | extend Cluster = extract(@'Kusto.(Engine|DM|CM|ArmResourceProvider).(.*).ShowDiagnostics',2, Source)
         | where Reason != "Merge success rate past 60min is < 90%"
         | where Reason != "Ingestion success rate past 5min is < 90%"
         | where Reason != "Ingestion success rate past 5min is < 90%, Merge success rate past 60min is < 90%"
         | where isnotempty(Cluster)
         | summarize max(Timestamp) by Cluster,Reason
         | order by  max_Timestamp desc
         | where Reason startswith "Differe"
         | summarize by Cluster
     ;
      DimClusters | where Cluster in (badVer)
     | summarize by Cluster , CmConnectionString , ServiceConnectionString ,DeploymentRing
     | extend ServiceConnectionString = strcat("#connect ", ServiceConnectionString)
     | where DeploymentRing == "$(DeploymentRing)"
    kustoUrls: 'https://<ClusterName>.kusto.windows.net?DatabaseName=<DatabaseName>'
    authType: 'kustoserviceconn'
    connectedServiceName: '<connection service name>'
    minThreshold: '0'
    maxThreshold: '10'
  continueOnError: true