Azure DevOps-taak voor Azure Data Explorer
Azure DevOps Services biedt ontwikkelhulpprogramma's voor samenwerking, zoals pijplijnen met hoge prestaties, gratis privé-Git-opslagplaatsen, configureerbare kanbanborden en uitgebreide geautomatiseerde en continue testmogelijkheden. Azure Pipelines is een Azure DevOps-mogelijkheid waarmee u CI/CD kunt beheren om uw code te implementeren met pijplijnen met hoge prestaties die werken met elke taal, elk platform en elke cloud. Azure Data Explorer - Pijplijnhulpprogramma's is de Azure Pipelines-taak waarmee u releasepijplijnen kunt maken en uw databasewijzigingen kunt implementeren in uw Azure Data Explorer-databases. Het is gratis beschikbaar in Visual Studio Marketplace. Deze extensie omvat drie basistaken:
Azure Data Explorer-opdracht: Beheer-opdrachten uitvoeren op een Azure Data Explorer-cluster
Azure Data Explorer-query: query's uitvoeren op een Azure Data Explorer-cluster en de resultaten parseren
Azure Data Explorer Query Server Gate - Taak zonder agent naar Gate releases, afhankelijk van het queryresultaat
In dit document wordt een eenvoudig voorbeeld beschreven van het gebruik van de taak Azure Data Explorer - Pijplijnhulpprogramma's om uw schemawijzigingen in uw database te implementeren. Raadpleeg de Documentatie van Azure DevOps voor volledige CI/CD-pijplijnen.
Vereisten
- Een Azure-abonnement. Maak een gratis Azure-account.
- Een Azure Data Explorer-cluster en -database. Maak een cluster en database.
- Azure Data Explorer-cluster instellen:
- Maak Microsoft Entra app door een Microsoft Entra-toepassing in te richten.
- Ververleent toegang tot uw Microsoft Entra-app in uw Azure Data Explorer-database door azure Data Explorer databasemachtigingen te beheren.
- Azure DevOps-installatie:
- Installatie van extensie:
- Als u de eigenaar van het Azure DevOps-exemplaar bent, installeert u de extensie vanuit Marketplace.
- Als u NIET de eigenaar van het Azure DevOps-exemplaar bent, neemt u contact op met uw eigenaar en vraagt u deze te installeren.
Uw inhoud voorbereiden voor release
Er zijn drie manieren om beheeropdrachten uit te voeren voor een cluster in een taak.
Gebruik een zoekpatroon om meerdere opdrachtbestanden op te halen uit een lokale agentmap (buildbronnen of release-artefacten)
Opdrachten inline schrijven
Geef een bestandspad op om opdrachtbestanden rechtstreeks uit git-broncodebeheer op te halen (aanbevolen)
Maak de volgende voorbeeldmappen (Functies, Beleid, Tabellen) in uw Git-opslagplaats. Kopieer de bestanden van hieruit naar de respectieve mappen zoals hieronder wordt weergegeven en voer de wijzigingen door. De voorbeeldbestanden worden geleverd om de volgende werkstroom uit te voeren.
Tip
Wanneer u uw eigen werkstroom maakt, raden we u aan uw code idempotent te maken. Gebruik
.create-merge table
bijvoorbeeld in plaats van.create table
en gebruik.create-or-alter
functie in plaats van.create
functie.
Een release-pijplijn maken
Meld u aan bij uw Azure DevOps-organisatie.
Selecteer Pijplijnen>releases in het linkermenu en selecteer Nieuwe pijplijn.
Het venster Nieuwe release-pijplijn wordt geopend. Selecteer op het tabblad Pijplijnen in het deelvenster Een sjabloon selecteren de optie Lege taak.
Selecteer de knop Fase . Voeg in het deelvenster Fase de naam van het stadium toe. Selecteer Opslaan om de pijplijn op te slaan.
Selecteer de knop Een artefact toevoegen . Selecteer in het deelvenster Een artefact toevoegen de opslagplaats waarin uw code zich bevindt, vul relevante informatie in en klik op Toevoegen. Selecteer Opslaan om de pijplijn op te slaan.
Selecteer op het tabblad Variabelen de optie + Toevoegen om een variabele te maken voor Eindpunt-URL die in de taak wordt gebruikt. Schrijf de naam en de waarde van het eindpunt. Selecteer Opslaan om de pijplijn op te slaan.
Als u uw Endpoint_URL wilt vinden, bevat de overzichtspagina van uw Azure Data Explorer-cluster in de Azure Portal de Azure Data Explorer-cluster-URI. Maak de URI in de volgende indeling
https://<Azure Data Explorer cluster URI>?DatabaseName=<DBName>
. Bijvoorbeeld: https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB
Taken maken om de mappen te implementeren
Klik op het tabblad Pijplijn op 1 taak, 0 taak om taken toe te voegen.
Herhaal de volgende stappen om opdrachttaken te maken voor het implementeren van bestanden vanuit de mappen Tabellen, Functies en Beleid :
Selecteer op het tabblad Taken de optie +Agenttaak en zoek naar Azure Data Explorer.
Selecteer onder Azure Data Explorer-opdracht uitvoeren de optie Toevoegen.
Selecteer Kusto Command en werk de taak bij met de volgende informatie:
Weergavenaam: naam van de taak. Hierbij is bijvoorbeeld
Deploy <FOLDER>
<FOLDER>
de naam van de map voor de implementatietaak die u maakt.Bestandspad: geef voor elke map het pad op als
*/<FOLDER>/*.csl
waar<FOLDER>
de relevante map voor de taak is.Eindpunt-URL: geef de variabele op die in de
EndPoint URL
vorige stap is gemaakt.Service-eindpunt gebruiken: selecteer deze optie.
Service-eindpunt: selecteer een bestaand service-eindpunt of maak een nieuw service-eindpunt (+ Nieuw) met de volgende informatie in het venster Azure Data Explorer serviceverbinding toevoegen:
Instelling Voorgestelde waarde Verbindingsnaam Voer een naam in om dit service-eindpunt te identificeren Cluster-URL De waarde vindt u in de overzichtssectie van uw Azure Data Explorer-cluster in de Azure Portal Service-principal-id Voer de Microsoft Entra app-id in (gemaakt als vereiste) Service-principal-app-sleutel Voer de Microsoft Entra-app-sleutel in (gemaakt als vereiste) tenant-id van Microsoft Entra Voer uw Microsoft Entra tenant in (zoals microsoft.com of contoso.com)
Schakel het selectievakje Alle pijplijnen toestaan deze verbinding te gebruiken in en selecteer vervolgens OK.
Selecteer Opslaan en controleer vervolgens op het tabblad Taken of er drie taken zijn: Tabellen implementeren, Functies implementeren en Beleid implementeren.
Een querytaak maken
Maak indien nodig een taak om een query uit te voeren op het cluster. Het uitvoeren van query's in een build- of release-pijplijn kan worden gebruikt om een gegevensset te valideren en een stap te laten slagen of mislukken op basis van de queryresultaten. De criteria voor geslaagde taken kunnen worden gebaseerd op een drempelwaarde voor het aantal rijen of één waarde, afhankelijk van wat de query retourneert.
Selecteer + op het tabblad Taken op Agenttaak en zoek naar Azure Data Explorer.
Selecteer onder Azure Data Explorer-query uitvoeren de optie Toevoegen.
Selecteer Kusto-query en werk de taak bij met de volgende informatie:
- Weergavenaam: naam van de taak. Bijvoorbeeld Een query uitvoeren op cluster.
- Type: Selecteer Inline.
- Query: voer de query in die u wilt uitvoeren.
-
Eindpunt-URL: geef de
EndPoint URL
variabele op die u eerder hebt gemaakt. - Service-eindpunt gebruiken: selecteer deze optie.
- Service-eindpunt: selecteer een service-eindpunt.
Selecteer onder Taakresultaten als volgt de succescriteria van de taak op basis van de resultaten van uw query:
Als uw query rijen retourneert, selecteert u Aantal rijen en geeft u de criteria op die u nodig hebt.
Als uw query een waarde retourneert, selecteert u Enkele waarde en geeft u het verwachte resultaat op.
Een queryserverpoorttaak maken
Maak indien nodig een taak om een query uit te voeren op een cluster en de voortgang van de release in afwachting van het aantal rijen met queryresultaten. De taak Serverquerypoort is een taak zonder agent, wat betekent dat de query rechtstreeks op de Azure DevOps Server wordt uitgevoerd.
Selecteer op het tabblad Taken de optie +Taak zonder agent en zoek naar Azure Data Explorer.
Selecteer onder Run Azure Data Explorer Query Server Gatede optie Add.
Selecteer Kusto Query Server Gate en selecteer vervolgens Server Gate Test.
Configureer de taak met de volgende informatie:
- Weergavenaam: naam van de poort.
- Service-eindpunt: selecteer een service-eindpunt.
- Databasenaam: geef de databasenaam op.
- Type: Selecteer Inlinequery.
- Query: voer de query in die u wilt uitvoeren.
- Maximumdrempelwaarde: geef het maximumaantal rijen op voor de criteria voor het slagen van de query.
Notitie
Als het goed is, ziet u de volgende resultaten wanneer u de release uitvoert.
De release uitvoeren
Selecteer + Release>Release maken om een release te maken.
Controleer op het tabblad Logboeken of de implementatiestatus is geslaagd.
U hebt nu een release-pijplijn gemaakt voor implementatie naar preproductie.
Configuratie van Yaml-pijplijn
De taken kunnen worden geconfigureerd via de Azure DevOps-webinterface (zoals hierboven weergegeven) en via Yaml-code binnen het pijplijnschema
Voorbeeldgebruik van Beheer-opdracht
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
Queryvoorbeeldgebruik
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