Azure DevOps-feladat az Azure Data Explorer-hoz

Az Azure DevOps Services fejlesztési együttműködési eszközöket, például nagy teljesítményű folyamatokat, ingyenes privát Git-adattárakat, konfigurálható Kanban-táblákat, valamint kiterjedt automatizált és folyamatos tesztelési képességeket biztosít. Az Azure Pipelines egy Azure DevOps-képesség, amely lehetővé teszi a CI/CD kezelését a kód nagy teljesítményű folyamatokkal való üzembe helyezéséhez, amelyek bármilyen nyelven, platformon és felhőben működnek. Azure Data Explorer – A Pipeline Tools az Azure Pipelines-feladat, amely lehetővé teszi a kiadási folyamatok létrehozását és az adatbázis-módosítások üzembe helyezését az Azure Data Explorer-adatbázisokban. Ingyenesen elérhető a Visual Studio Marketplace-en. Ez a bővítmény 3 alapvető feladatot tartalmaz:

  • Azure Data Explorer command – Rendszergazda-parancsok futtatása Azure Data Explorer-fürtön

  • Azure Data Explorer Query – Lekérdezések futtatása azure Data Explorer-fürtön, és az eredmények elemzése

  • Azure Data Explorer Query Server Gate – Ügynök nélküli feladat a Gate-nek a lekérdezés eredményétől függően

    Tevékenységtípusok.

Ez a dokumentum egy egyszerű példát mutat be az Azure Data Explorer – Pipeline Tools feladat használatára a sémamódosítások adatbázisba való üzembe helyezéséhez. A teljes CI/CD-folyamatokért tekintse meg az Azure DevOps dokumentációját.

Előfeltételek

A tartalom előkészítése a kiadásra

Háromféleképpen futtathat rendszergazdai parancsokat egy feladat fürtjén.

Parancsforrás-vezérlési beállítások.

  • Keresési minta használatával több parancsfájlt is lekérhet egy helyi ügynökmappából (buildforrások vagy kiadási összetevők)

    Helyi mappa lehetőség.

  • Parancsok írása beágyazottan

    Beágyazott parancsbeállítás.

  • Adja meg a fájl elérési útját a parancsfájlok közvetlenül a Git-verziókövetésből való lekéréséhez (ajánlott)

    Git-fájlok lehetőség.

    Hozza létre a következő mintamappákat (függvények, szabályzatok, táblák) a Git-adattárban. Másolja a fájlokat innen a megfelelő mappákba az alább látható módon, és véglegesítse a módosításokat. A mintafájlok a következő munkafolyamat végrehajtásához vannak megadva.

    Hozzon létre mappákat az adattárhoz.

    Tipp

    Saját munkafolyamat létrehozásakor javasoljuk a kód idempotenssé tételét. Használja például a helyett a parancsot, .create-merge table és függvény helyett használja .create-or-alter a függvényt.create..create table

Kiadási folyamat létrehozása

  1. Jelentkezzen be az Azure DevOps-szervezetbe.

  2. A bal oldali menüben válassza a Pipelines>Releases (Folyamatok kiadásai) lehetőséget, majd válassza az Új folyamat lehetőséget.

    Új folyamat.

  3. Megnyílik az Új kiadási folyamat ablak. A Folyamatok lap Sablon kiválasztása paneljén válassza az Üres feladat lehetőséget.

    Válasszon ki egy sablont.

  4. Válassza a Fázis gombot. A Szakasz panelen adja hozzá a Szakasz nevét. A folyamat mentéséhez válassza a Mentés lehetőséget.

    Nevezze el a szakaszt.

  5. Válassza az Összetevő hozzáadása gombot. Az Összetevő hozzáadása panelen válassza ki azt az adattárat, ahol a kód létezik, töltse ki a releváns információkat, és kattintson a Hozzáadás gombra. A folyamat mentéséhez válassza a Mentés lehetőséget.

    Összetevő hozzáadása.

  6. A Változók lapon válassza a + Hozzáadás lehetőséget egy változó létrehozásához a feladatban használt végponti URL-címhez . Írja be a végpont nevét és értékét . A folyamat mentéséhez válassza a Mentés lehetőséget.

    Változó létrehozása.

    A Endpoint_URL megkereséséhez az Azure Data Explorer-fürt áttekintő oldala a Azure Portal tartalmazza az Azure Data Explorer-fürt URI-ját. Hozza létre az URI-t a következő formátumban https://<Azure Data Explorer cluster URI>?DatabaseName=<DBName>: . Például: https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB

    Azure Data Explorer-fürt URI-ja.

Feladatok létrehozása a mappák üzembe helyezéséhez

  1. A Folyamat lapon kattintson az 1 feladat, 0 tevékenység elemre a tevékenységek hozzáadásához.

    Tevékenységek hozzáadása.

  2. Ismételje meg az alábbi lépéseket a parancsfeladatok létrehozásához, hogy fájlokat helyezzen üzembe a Táblák, Függvények és Szabályzatok mappából:

    Rendszergazdai parancsok hozzáadása.

    1. A Feladatok lapon válassza az Ügynökfeladat lehetőséget+, és keresse meg az Azure Data Explorer.

    2. Az Azure Data Explorer parancs futtatása területen válassza a Hozzáadás lehetőséget.

    3. Válassza a Kusto-parancsot , és frissítse a feladatot a következő információkkal:

      • Megjelenítendő név: A feladat neve. Például Deploy <FOLDER> , ahol <FOLDER> a létrehozott üzembe helyezési feladat mappájának neve.

      • Fájl elérési útja: Minden mappához adja meg az elérési utat, ahol */<FOLDER>/*.csl<FOLDER> a feladathoz tartozó mappa található.

      • Végpont URL-címe: Adja meg az EndPoint URL előző lépésben létrehozott változót.

      • Szolgáltatásvégpont használata: Válassza ezt a lehetőséget.

      • Szolgáltatásvégpont: Válasszon ki egy meglévő szolgáltatásvégpontot, vagy hozzon létre egy újat (+ Új) az Azure Data Explorer szolgáltatáskapcsolat hozzáadása ablakban:

        Beállítás Ajánlott érték
        Kapcsolat neve Adjon meg egy nevet a szolgáltatásvégpont azonosításához
        Fürt URL-címe Az érték az Azure Data Explorer-fürt áttekintési szakaszában található a Azure Portal
        Szolgáltatásnév azonosítója Adja meg a Microsoft Entra alkalmazásazonosítót (előfeltételként létrehozva)
        Szolgáltatásnév alkalmazáskulcsa Adja meg a Microsoft Entra alkalmazáskulcsot (előfeltételként létrehozva)
        Microsoft Entra bérlőazonosító Adja meg a Microsoft Entra bérlőt (például microsoft.com vagy contoso.com)

      Jelölje be Az összes folyamat használhatja ezt a kapcsolatot jelölőnégyzetet, majd kattintson az OK gombra.

      Szolgáltatáskapcsolat hozzáadása.

  3. Válassza a Mentés lehetőséget, majd a Feladatok lapon ellenőrizze, hogy három feladat van-e: Táblák üzembe helyezése, Függvények üzembe helyezése és Szabályzatok központi telepítése.

    Helyezze üzembe az összes mappát.

Lekérdezési feladat létrehozása

Ha szükséges, hozzon létre egy feladatot, amellyel lekérdezést futtathat a fürtön. A lekérdezések buildelési vagy kiadási folyamatban való futtatásával érvényesítheti az adathalmazt, és a lekérdezés eredményei alapján sikeres vagy sikertelen lépésekkel rendelkezhet. A feladatok sikerességi feltételei egy sorszám küszöbértékén vagy egyetlen értéken alapulhatnak attól függően, hogy a lekérdezés mit ad vissza.

  1. A Feladatok lapon válassza az Ügynökfeladatok lehetőséget+, és keresse meg az Azure Data Explorer.

  2. Az Azure Data Explorer Query futtatása területen válassza a Hozzáadás lehetőséget.

  3. Válassza a Kusto Query lehetőséget, és frissítse a feladatot a következő információkkal:

    • Megjelenítendő név: A feladat neve. Ilyen például a Lekérdezésfürt.
    • Típus: Válassza a Beágyazott lehetőséget.
    • Lekérdezés: Adja meg a futtatni kívánt lekérdezést.
    • Végpont URL-címe: Adja meg a EndPoint URL korábban létrehozott változót.
    • Szolgáltatásvégpont használata: Válassza ezt a lehetőséget.
    • Szolgáltatásvégpont: Válasszon ki egy szolgáltatásvégpontot.

    Lekérdezési feladat.

  4. A Tevékenység eredményei területen válassza ki a feladat sikerességi feltételeit a lekérdezés eredményei alapján az alábbiak szerint:

    • Ha a lekérdezés sorokat ad vissza, válassza a Sorszám lehetőséget, és adja meg a szükséges feltételeket.

      Lekérdezési tevékenységsorok száma.

    • Ha a lekérdezés értéket ad vissza, válassza az Egyetlen érték lehetőséget, és adja meg a várt eredményt.

      Feladat egyetlen értékének lekérdezése.

Lekérdezéskiszolgáló-kapu feladat létrehozása

Ha szükséges, hozzon létre egy feladatot, amely lekérdezést futtat egy fürtön, és lezárja a kiadási folyamatot a Lekérdezési eredmények sorszámának függőben. A Kiszolgálólekérdezés-kapu feladat ügynök nélküli feladat, ami azt jelenti, hogy a lekérdezés közvetlenül a Azure DevOps Server fut.

  1. A Feladatok lapon válassza az Ügynök nélküli feladat lehetőséget+, és keresse meg az Azure Data Explorer.

  2. Az Azure Data Explorer Query Server Gate futtatása területen válassza a Hozzáadás lehetőséget.

  3. Válassza a Kusto Query Server Gate elemet, majd válassza a Kiszolgálói kapu tesztelése lehetőséget.

    Válassza a Kiszolgálókapu feladat lehetőséget.

  4. Konfigurálja a feladatot, és adja meg a következő információkat:

    • Megjelenítendő név: A kapu neve.
    • Szolgáltatásvégpont: Válasszon ki egy szolgáltatásvégpontot.
    • Adatbázis neve: Adja meg az adatbázis nevét.
    • Típus: Válassza a Beágyazott lekérdezés lehetőséget.
    • Lekérdezés: Adja meg a futtatni kívánt lekérdezést.
    • Maximális küszöbérték: Adja meg a lekérdezés sikerességi feltételének maximális sorszámát.

    Kiszolgálókapu-feladat konfigurálása.

Megjegyzés

Az alábbihoz hasonló eredményeknek kell megjelennie a kiadás futtatásakor.

Lekérdezési kapu feladat.

A kiadás futtatása

  1. A kiadás létrehozásához válassza a + Kiadás>létrehozása lehetőséget .

    Hozzon létre egy kiadást.

  2. A Naplók lapon ellenőrizze, hogy az üzembe helyezés állapota sikeres-e.

    Az üzembe helyezés sikeres.

Ezzel befejezte egy kiadási folyamat létrehozását az éles üzem előtti üzembe helyezéshez.

Yaml-folyamat konfigurálása

A feladatok konfigurálhatók az Azure DevOps webes felhasználói felületén (a fent látható módon) és a folyamatsémán belüli Yaml-kódon keresztül is

Rendszergazda parancs mintahasználata

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

Lekérdezési minta használata

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