Dela via


Azure DevOps-uppgift för Azure Data Explorer

Azure DevOps Services tillhandahåller samarbetsverktyg för utveckling, till exempel högpresterande pipelines, kostnadsfria privata Git-lagringsplatser, konfigurerbara Kanban-tavlor och omfattande automatiserade och kontinuerliga testningsfunktioner. Azure Pipelines är en Azure DevOps-funktion som gör att du kan hantera CI/CD för att distribuera din kod med högpresterande pipelines som fungerar med valfritt språk, plattform och moln. Azure Data Explorer – Pipeline Tools är uppgiften Azure Pipelines som gör att du kan skapa versionspipelines och distribuera dina databasändringar till dina Azure Data Explorer-databaser. Den är tillgänglig kostnadsfritt på Visual Studio Marketplace. Det här tillägget innehåller tre grundläggande uppgifter:

  • Azure Data Explorer-kommando – Kör Admin-kommandon mot ett Azure Data Explorer-kluster

  • Azure Data Explorer Query – Kör frågor mot ett Azure Data Explorer-kluster och parsa resultatet

  • Azure Data Explorer Query Server Gate – Agentlös uppgift till Gate-versioner beroende på frågeresultatet

    Aktivitetstyper.

Det här dokumentet beskriver ett enkelt exempel på användningen av uppgiften Azure Data Explorer – Pipeline Tools för att distribuera schemaändringarna till databasen. Fullständiga CI/CD-pipelines finns i Azure DevOps-dokumentationen.

Förutsättningar

Förbereda ditt innehåll för lansering

Det finns tre sätt att köra administratörskommandon mot kluster i en uppgift.

Alternativ för kommandokällkontroll.

  • Använd ett sökmönster för att hämta flera kommandofiler från en lokal agentmapp (Skapa källor eller Versionsartefakter)

    Alternativet Lokal mapp.

  • Skriv kommandon infogade

    Infogat kommandoalternativ.

  • Ange en filsökväg för att hämta kommandofiler direkt från git-källkontrollen (rekommenderas)

    Git-filalternativ.

    Skapa följande exempelmappar (Functions, Policies, Tables) på din Git-lagringsplats. Kopiera filerna härifrån till respektive mappar enligt nedan och checka in ändringarna. Exempelfilerna tillhandahålls för att köra följande arbetsflöde.

    Skapa mappar för lagringsplatsen.

    Tips

    När du skapar ett eget arbetsflöde rekommenderar vi att du gör din kod idempotent. Använd till exempel .create-merge table i stället för .create tableoch använd .create-or-alter funktionen i stället för .create funktionen.

Skapa en versionspipeline

  1. Logga in på din Azure DevOps-organisation.

  2. Välj PipelinesReleases (Pipelines-versioner>) på menyn till vänster och välj Ny pipeline.

    Ny pipeline.

  3. Fönstret Ny versionspipeline öppnas. På fliken Pipelines går du till fönstret Välj en mall och väljer Tomt jobb.

    Välj en mall.

  4. Välj knappen Steg . I fönstret Fas lägger du till fasnamnet. Välj Spara för att spara din pipeline.

    Namnge fasen.

  5. Välj knappen Lägg till en artefakt . I fönstret Lägg till en artefakt väljer du den lagringsplats där koden finns, fyller i relevant information och klickar på Lägg till. Välj Spara för att spara din pipeline.

    Lägg till en artefakt.

  6. På fliken Variabler väljer du + Lägg till för att skapa en variabel för Slutpunkts-URL som ska användas i aktiviteten. Skriv namn och värde för slutpunkten. Välj Spara för att spara din pipeline.

    Skapa variabel.

    För att hitta din Endpoint_URL innehåller översiktssidan för ditt Azure Data Explorer-kluster i Azure Portal URI:n för Azure Data Explorer-klustret. Konstruera URI:n i följande format https://<Azure Data Explorer cluster URI>?DatabaseName=<DBName>. Till exempel https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB

    Azure Data Explorer kluster-URI.

Skapa uppgifter för att distribuera mapparna

  1. På fliken Pipeline klickar du på 1 jobb, 0 aktivitet för att lägga till aktiviteter.

    Lägg till uppgifter.

  2. Upprepa följande steg för att skapa kommandoaktiviteter för att distribuera filer från mapparna Tabeller, Funktioner och Principer :

    Lägg till administratörskommandon.

    1. På fliken Uppgifter väljer du + efter Agentjobb och söker efter Azure Data Explorer.

    2. Under Kör Azure Data Explorer-kommando väljer du Lägg till.

    3. Välj Kusto-kommandot och uppdatera uppgiften med följande information:

      • Visningsnamn: Namnet på aktiviteten. Där är till exempel Deploy <FOLDER><FOLDER> namnet på mappen för den distributionsuppgift som du skapar.

      • Filsökväg: För varje mapp anger du sökvägen som */<FOLDER>/*.csl var <FOLDER> är den relevanta mappen för uppgiften.

      • Slutpunkts-URL: Ange variabeln EndPoint URL som skapades i föregående steg.

      • Använd tjänstslutpunkt: Välj det här alternativet.

      • Tjänstslutpunkt: Välj en befintlig tjänstslutpunkt eller skapa en ny (+ Ny) med följande information i fönstret Lägg till Azure Data Explorer-tjänstanslutning:

        Inställning Föreslaget värde
        Anslutningsnamn Ange ett namn för att identifiera den här tjänstslutpunkten
        Kluster-URL Du hittar värdet i översiktsavsnittet för ditt Azure Data Explorer-kluster i Azure Portal
        ID för tjänstens huvudnamn Ange Microsoft Entra app-ID (skapas som krav)
        Appnyckel för tjänstens huvudnamn Ange Microsoft Entra-appnyckeln (skapad som en förutsättning)
        Microsoft Entra klientorganisations-ID Ange din Microsoft Entra klientorganisation (till exempel microsoft.com eller contoso.com)

      Markera kryssrutan Tillåt alla pipelines att använda den här anslutningen och välj sedan OK.

      Lägg till tjänstanslutning.

  3. Välj Spara och kontrollera sedan att det finns tre uppgifter på fliken Uppgifter : Distribuera tabeller, Distribuera funktioner och Distribuera principer.

    Distribuera alla mappar.

Skapa en frågeaktivitet

Om det behövs skapar du en uppgift för att köra en fråga mot klustret. Köra frågor i en bygg- eller versionspipeline kan användas för att verifiera en datauppsättning och ha ett steg som lyckas eller misslyckas baserat på frågeresultaten. Uppgifternas framgångsvillkor kan baseras på ett tröskelvärde för antal rader eller ett enda värde beroende på vad frågan returnerar.

  1. På fliken Uppgifter väljer du + efter agentjobb och söker efter Azure Data Explorer.

  2. Under Kör Azure Data Explorer Query väljer du Lägg till.

  3. Välj Kusto Query och uppdatera uppgiften med följande information:

    • Visningsnamn: Namnet på aktiviteten. Till exempel Frågekluster.
    • Typ: Välj Infogad.
    • Fråga: Ange den fråga som du vill köra.
    • Slutpunkts-URL: Ange variabeln som EndPoint URL skapades tidigare.
    • Använd tjänstslutpunkt: Välj det här alternativet.
    • Tjänstslutpunkt: Välj en tjänstslutpunkt.

    Frågeaktivitet.

  4. Under Aktivitetsresultat väljer du uppgiftens framgångsvillkor baserat på resultatet av din fråga enligt följande:

    • Om frågan returnerar rader väljer du Antal rader och anger de villkor som du behöver.

      Antal frågeaktivitetsrader.

    • Om frågan returnerar ett värde väljer du Enskilt värde och anger det förväntade resultatet.

      Fråga enskilt värde för aktivitet.

Skapa en Query Server Gate-uppgift

Om det behövs skapar du en uppgift för att köra en fråga mot ett kluster och gate den versionsstatus som väntar på antal frågeresultat. Aktiviteten Server Query Gate är ett agentlöst jobb, vilket innebär att frågan körs direkt på Azure DevOps Server.

  1. På fliken Uppgifter väljer du + efter Agentlöst jobb och söker efter Azure Data Explorer.

  2. Under Kör Azure Data Explorer Query Server Gate väljer du Lägg till.

  3. Välj Kusto Query Server Gate och välj sedan Server Gate Test.

    Välj Serverportaktivitet.

  4. Konfigurera uppgiften med följande information:

    • Visningsnamn: Namn på grinden.
    • Tjänstslutpunkt: Välj en tjänstslutpunkt.
    • Databasnamn: Ange databasnamnet.
    • Typ: Välj infogad fråga.
    • Fråga: Ange den fråga som du vill köra.
    • Maximalt tröskelvärde: Ange det maximala radantalet för frågans framgångsvillkor.

    Konfigurera serverportaktivitet.

Anteckning

Du bör se resultat som följande när du kör versionen.

Frågegrindsaktivitet.

Kör versionen

  1. Välj + Släpp>Skapa version för att skapa en version.

    Skapa en version.

  2. På fliken Loggar kontrollerar du att distributionsstatusen har lyckats.

    Distributionen har slutförts.

Nu har du skapat en versionspipeline för distribution till förproduktion.

Yaml Pipeline-konfiguration

Uppgifterna kan konfigureras både via Azure DevOps Web UI (som visas ovan) och via Yaml-kod i pipelineschemat

Admin kommandoexempelanvändning

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

Frågeexempelanvändning

steps:
- task: Azure-Kusto.PublishToADX.ADXQuery.ADXQuery@1
  displayName: '<Task Display Name>'
  inputs:
    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=<DataBaneName>'
    customAuth: true
    connectedServiceName: '<Service Endpoint Name>'
  continueOnError: true