Azure Veri Gezgini için Azure DevOps görevi

Azure DevOps Services , yüksek performanslı işlem hatları, ücretsiz özel Git depoları, yapılandırılabilir Kanban panoları ve kapsamlı otomatik ve sürekli test özellikleri gibi geliştirme işbirliği araçları sağlar. Azure Pipelines , kodunuzu herhangi bir dil, platform ve bulutla çalışan yüksek performanslı işlem hatlarıyla dağıtmak için CI/CD'yi yönetmenizi sağlayan bir Azure DevOps özelliğidir. Azure Veri Gezgini - İşlem Hattı Araçları, yayın işlem hatları oluşturmanıza ve veritabanı değişikliklerinizi Azure Veri Gezgini veritabanlarınıza dağıtmanıza olanak tanıyan Azure Pipelines görevidir. Visual Studio Market'te ücretsiz olarak kullanılabilir. Uzantı aşağıdaki temel görevleri içerir:

  • Azure Veri Gezgini komutu - Azure Veri Gezgini kümesinde yönetici komutlarını çalıştırma

  • Azure Veri Gezgini sorgusu - Azure Veri Gezgini kümesinde sorgu çalıştırma ve sonuçları ayrıştırma

  • Azure Veri Gezgini sorgu sunucusu kapısı - Sorgu sonucuna göre yayınları kontrol etmek veya yönetmek için aracısız görev

    İşlem Hattı Araçları uzantısında kullanılabilen görev türlerinin ekran görüntüsü.

Bu belgede, şema değişikliklerini veritabanınıza dağıtmak için Azure Veri Gezgini - İşlem Hattı Araçları görevini kullanmanın basit bir örneği açıklanmaktadır. Tam CI/CD işlem hatları için Azure DevOps belgelerine bakın.

Önkoşullar

İçeriğinizi yayına hazırlama

Bir görev içindeki kümede yönetici komutlarını yürütmek için aşağıdaki yöntemleri kullanabilirsiniz:

Komut kaynağı denetim seçeneklerini gösteren ekran görüntüsü.

  • Yerel aracı klasöründen (derleme kaynakları veya yayın yapıtları) birden çok komut dosyaları almak için arama kalıbı kullanın. Tek satırlı seçenek, dosya başına bir komutla birden çok dosyayı destekler.

    Yerel klasör seçeneğini gösteren ekran görüntüsü.

  • Komutları satır içinde yazın.

    Satır içi komut seçeneğini gösteren ekran görüntüsü.

  • Komut dosyalarını doğrudan Git kaynak denetiminden almak için bir dosya yolu belirtin (önerilir).

    Git kaynak denetimi dosyaları seçeneğini gösteren ekran görüntüsü.

    Git deponuzda aşağıdaki örnek klasörleri (İşlevler, İlkeler, Tablolar) oluşturun. Örnek deposundaki dosyaları ilgili klasörlere kopyalayın ve değişiklikleri işleyin. Örnek dosyalar aşağıdaki iş akışını yürütmek için sağlanır.

    Depoda oluşturulacak klasörleri gösteren ekran görüntüsü.

    İpucu

    Kendi iş akışınızı oluştururken, kodunuzun idempotent olmasını tavsiye ederiz. Örneğin, .create-merge table yerine .create table ve .create-or-alter işlevi yerine .create işlevini kullanın.

Yayın işlem hattı oluşturun

  1. Azure DevOps kuruluşunuzda oturum açın.

  2. Sol taraftaki menüden Boruhatları>Sürümler ve ardından Yeni boruhattı seçin.

    Yeni işlem hattını başlatmayı gösteren ekran görüntüsü.

  3. Yeni sürüm işlem hattı penceresi açılır. İşlem Hatları sekmesindeki Şablon seçin bölmesinde boş iş'i seçin.

    Şablon seçmeyi gösteren ekran görüntüsü.

  4. Aşama düğmesini seçin. Aşama bölmesinde Aşamaadını ekleyin ve ardından kaydet'i seçerek işlem hattınızı kaydedin.

    İşlem hattı aşamasını adlandırmayı gösteren ekran görüntüsü.

  5. Bir artefakt ekleme düğmesini seçin. Yapıt ekle bölmesinde kodunuzun bulunduğu depoyu seçin, ilgili bilgileri doldurun ve Ekle'yi seçin. İşlem hattınızı kaydetmek için Kaydet'i seçin.

    Yapıtın nasıl ekleneceğini gösteren ekran görüntüsü.

  6. Değişkenler sekmesinde + Ekle'yi seçerek görevde kullanılan Uç Nokta URL'si için bir değişken oluşturun. Uç noktanın Adını ve Değerini girin ve ardından kaydet'i seçerek işlem hattınızı kaydedin.

    İşlem hattı değişkeni oluşturmayı gösteren ekran görüntüsü.

    Uç nokta URL'nizi bulmak için Azure portalda Azure Veri Gezgini kümenizin genel bakış sayfasına gidin ve küme URI'sini kopyalayın. Değişken URI'sini aşağıdaki biçimde biçimlendirin https://<ClusterURI>?DatabaseName=<DBName>. Örneğin https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB

    Azure Veri Gezgini kümesi URI'sine değer eklemeyi gösteren ekran görüntüsü.

Görev oluştur ve klasörleri dağıt

  1. İşlem Hattı sekmesinde görev eklemek için 1 iş, 0 görev'i seçin.

    İşlem hattına görev eklemeyi gösteren ekran görüntüsü.

  2. Tablolar, İşlevler ve İlkeler klasörlerinden dosyaları dağıtımı yapmak için komut görevlerini oluşturmak üzere aşağıdaki adımları yineleyin:

    Azure Veri Gezgini yönetici komutunun nasıl ekleneceğini gösteren ekran görüntüsü.

    1. Görevler sekmesinde Aracı işi+ ile seç ve Azure Veri Gezgini arayın.

    2. Azure Veri Gezgini Komutunu Çalıştır'ın altında Ekle'yi seçin.

    3. Kusto Komutu'na tıklayın ve görevi aşağıdaki bilgilerle güncelleştirin:

      • Görünen ad: Görevin adı. Örneğin, Deploy <FOLDER> oluşturduğunuz dağıtım görevinin klasörünün adıdır.

      • Dosya yolu: Her klasör için, görevin ilgili klasörü olarak */<FOLDER>/*.csl yolu <FOLDER> belirtin.

      • Uç nokta URL'siEndPoint URL: Önceki adımda oluşturulan değişkeni belirtin.

      • Hizmet Uç Noktasını Kullan: Bu seçeneği belirleyin.

      • Hizmet Uç Noktası: Mevcut bir hizmet uç noktasını seçin veya Azure Veri Gezgini hizmet bağlantısı ekle penceresinde aşağıdaki bilgileri sağlayan yeni bir (+ Yeni) oluşturun:

        Ayarlar Önerilen değer
        Kimlik doğrulama yöntemi Federasyon Kimliği Kimlik Bilgilerini (FIC) ayarlayın (önerilir) veya Hizmet Sorumlusu Kimlik Doğrulaması (SPA) seçeneğini belirleyin.
        Bağlantı adı Bu hizmet uç noktasını tanımlamak için bir ad girin
        Küme Url'si Değer, Azure portalındaki Azure Veri Gezgini Kümenizin genel bakış bölümünde bulunabilir
        Hizmet Sorumlusu Kimliği Microsoft Entra Uygulama Kimliğini girin (önkoşul olarak oluşturulur)
        Service Principal Uygulama Anahtarı Microsoft Entra Uygulama Anahtarı'nı girin (önkoşul olarak oluşturulur)
        Microsoft Entra tenant kimliği Microsoft Entra kiracınızı (microsoft.com veya contoso.com gibi) girin

      Tüm işlem hatlarının bu bağlantıyı kullanmasına izin ver onay kutusunu ve ardından Tamam'ı seçin.

      Hizmet bağlantısının nasıl ekleneceğini gösteren ekran görüntüsü.

    4. Yönetici komutlarınız uzun süre çalışan eş zamansız işlemlerse, Uzun Süre Çalışan Eş Zamansız Yönetici Komutlarının Tamamlanmasını Bekle onay kutusunu seçin. Etkinleştirildiğinde, görev .show operations kullanarak komut tamamlanana kadar işlem durumunu sorgular.

  3. Kaydet'i seçin ve Görevler sekmesinde üç görev olduğunu doğrulayın: Tabloları Dağıtma, İşlevleri Dağıtma ve İlkeleri Dağıtma.

    Tüm klasörlerin nasıl dağıtılacağı gösteren ekran görüntüsü.

Sorgu görevi oluşturma

Gerekirse, kümeye karşı sorgu çalıştırmak için bir görev oluşturun. Derleme veya Yayın işlem hattında sorgu çalıştırmak, bir veri kümesini doğrulamak ve sorgu sonuçlarına göre bir adımın başarılı veya başarısız olması için kullanılabilir. Görevlerin başarı ölçütleri, sorgunun döndürdüğü değere bağlı olarak bir satır sayısı eşiğine veya tek bir değere dayalı olabilir.

  1. Görevler sekmesinde, Aracı işiyle+ seçeneğini belirleyin ve Azure Veri Gezgini için arama yapın.

  2. Azure Veri Gezgini Sorgusunu Çalıştır'ın altında Ekle'yi seçin.

  3. Kusto Sorgusu'na tıklayın ve görevi aşağıdaki bilgilerle güncelleştirin:

    • Görüntü adı: Görevin adı. Örneğin, Sorgu kümesi.
    • Tür: Satır içi'yi seçin.
    • Sorgu: Çalıştırmak istediğiniz sorguyu girin.
    • Uç nokta URL'siEndPoint URL: Daha önce oluşturulan değişkeni belirtin.
    • Hizmet Uç Noktasını Kullan: Bu seçeneği belirleyin.
    • Hizmet Uç Noktası: Bir hizmet uç noktası seçin.

    Sorgu görevinin nasıl oluşturulacağını gösteren ekran görüntüsü.

  4. Görev Sonuçları'nın altında, sorgunuzun sonuçlarına göre görevin başarı ölçütlerini aşağıdaki gibi seçin:

    • Sorgunuz satır döndürüyorsa Satır Sayısı'nı seçin ve ihtiyacınız olan ölçütleri belirtin.

      Sorgunun satırları döndürdüğünü ve satır sayısı eşiklerinin ayarlandığını gösteren ekran görüntüsü.

    • Sorgunuz bir değer döndürürse Tek Değer'i seçin ve beklenen sonucu sağlayın.

      Sorgunun tek bir değer döndürdüğü ve beklenen değeri ayarlayacağını gösteren ekran görüntüsü.

Sorgu Sunucusu Ağ Geçidi görevi oluşturma

Gerekirse, bir kümede sorgu çalıştırmak ve Sorgu Sonuçları Satır Sayısı sonuçlanana kadar yayın ilerlemesini durdurmak için bir görev oluşturun. Sunucu Sorgu Kapısı görevi aracısız bir iştir, yani sorgu doğrudan Azure DevOps Sunucusu'nda çalışır.

  1. Görevler sekmesinde, Aracısız iş ile+ seçin ve Azure Veri Gezgini arayın.

  2. Azure Veri Gezgini Sorgu Sunucusu Geçidi'nin altında Ekle'yi seçin.

  3. Kusto Sorgu Sunucusu Kapısı'nı seçin ve ardından Sunucu Kapısı Testi'ni seçin.

    Sunucu Kapısı görevinin nasıl seçiliyor olduğunu gösteren ekran görüntüsü.

  4. Aşağıdaki bilgileri sağlayarak görevi yapılandırın:

    • Görüntü adı: Geçidin adı.
    • Hizmet Uç Noktası: Bir hizmet uç noktası seçin.
    • Veritabanı adı: Veritabanı adını belirtin.
    • Tür: Satır içi sorgu'yu seçin.
    • Sorgu: Çalıştırmak istediğiniz sorguyu girin.
    • Maksimum eşik: Sorgunun başarı ölçütleri için en yüksek satır sayısını belirtin.

    Sunucu Kapısı görevini yapılandırmayı gösteren ekran görüntüsü.

Not

Sürümü çalıştırırken aşağıdaki gibi sonuçlar görmeniz gerekir.

Örnek Sorgu Kapısı görev sonuçlarını gösteren ekran görüntüsü.

Sürümü çalıştırma

  1. Yayını başlatmak için + Yayın>Yayını oluştur seçin.

    Bir sürümün nasıl oluşturulacağını gösteren ekran görüntüsü.

  2. Günlükler sekmesinde dağıtım durumunun başarılı olup olmadığını denetleyin.

    Başarılı bir dağıtımı gösteren ekran görüntüsü.

Artık ön üretime dağıtım için bir yayın işlem hattı oluşturma işlemi tamamlandı.

Azure Veri Gezgini DevOps görevleri için anahtarsız kimlik doğrulaması desteği

Uzantı, Azure Veri Gezgini kümeleri için anahtarsız kimlik doğrulamasını destekler. Anahtarsız kimlik doğrulaması, anahtar kullanmadan Azure Veri Gezgini kümelerinde kimlik doğrulaması yapmanıza olanak tanır. Daha güvenlidir ve yönetilmesi daha kolaydır.

Not

Kusto Fabric küme URL'leri İş Yükü Kimlik Federasyonu (WIF) ve Yönetilen Kimlik kimlik doğrulaması için desteklenmez.

Azure Veri Gezgini hizmet bağlantısında Federasyon Kimliği Kimlik Bilgileri (FIC) kimlik doğrulamayı kullanma

Not

Azure Veri Gezgini Hizmet Uç Noktası, 4.0.x uzantısından başlayarak Hizmet Sorumlusu Kimlik Doğrulaması'na ek olarak İş Yükü Kimlik Federasyonu (WIF) kimlik doğrulamasını destekler.

  1. DevOps örneğinizde, Proje Ayarları sekmesine gidin ve >Hizmet bağlantıları tarafından >Yeni hizmet bağlantısı oluşturma seçeneğini tercih edin, ardından >Azure Veri Gezgini’ni seçin.

  2. Federasyon Kimliği Kimlik Bilgileri'ne tıklayın ve küme URL'nizi, hizmet sorumlusu kimliğinizi, kiracı kimliğinizi, bir hizmet bağlantı adını girin ve Kaydet'i seçin.

  3. Azure portalında, belirtilen hizmet sorumlusu için Microsoft Entra uygulamasını açın.

  4. Sertifikalar ve gizli diziler altında, Federasyon yetkilendirme bilgilerini seçin.

    Microsoft Entra uygulamasının federasyon kimlik bilgileri sekmesini gösteren ekran görüntüsü.

  5. Kimlik bilgisi ekle'yi seçin ve ardından Federasyon kimlik bilgisi senaryosu için Diğer veren'i seçin ve aşağıdaki bilgileri kullanarak ayarları doldurun.

    • Veren: <https://vstoken.dev.azure.com/{System.CollectionId}> burada {System.CollectionId} Azure DevOps kuruluşunuzun koleksiyon kimliğidir. Koleksiyon kimliğini aşağıdaki yollarla bulabilirsiniz:

      • Azure DevOps klasik yayın işlem hattında İş başlatmayı seçin. Koleksiyon kimliği günlüklerde görüntülenir.
    • Konu tanımlayıcısı: <sc://{DevOps_Org_name}/{Project_Name}/{Service_Connection_Name}> burada {DevOps_Org_name} Azure DevOps kuruluş adı, {Project_Name} proje adı ve {Service_Connection_Name} daha önce oluşturduğunuz hizmet bağlantısı adıdır.

      Not

      Hizmet bağlantı adınızda boşluk karakteri varsa, onu alandaki boşlukla birlikte kullanabilirsiniz. Örneğin: sc://MyOrg/MyProject/My Service Connection.

    • Ad: Kimlik bilgisi için bir ad girin.

    Federasyon Kimliği Kimlik Bilgileri ile yeni bir hizmet bağlantısının nasıl oluşturulacağını gösteren ekran görüntüsü.

  6. Ekle'yi seçin.

Azure Resource Manager (ARM) hizmet bağlantısında Federasyon Kimliği Kimlik Bilgilerini veya Yönetilen Kimliği kullanma

  1. DevOps örneğinizde Proje Ayarları>Hizmet bağlantıları>Yeni hizmet bağlantısı>Azure Kaynak Yöneticisi'ne gidin.

    Azure Kaynak İzleyicisi hizmet bağlantısının nasıl ekleneceğini gösteren ekran görüntüsü.

  2. Devam etmek için Kimlik doğrulama yöntemi'nin altında İş Yükü Kimlik Federasyonu (otomatik) öğesini seçin. İş Yükü Kimliği Federasyonu ayrıntılarını belirtmek için el ile İş Yükü Kimliği Federasyonu seçeneğini veya Yönetilen Kimlik seçeneğini de kullanabilirsiniz. Azure Resource Manager (ARM) Hizmet Bağlantılarında Azure Kaynak Yönetimi kullanarak yönetilen kimlik ayarlama hakkında daha fazla bilgi edinin.

    Azure Kaynak İzleyicisi hizmet bağlantısı için kimlik doğrulama seçeneğini gösteren ekran görüntüsü

  3. Gerekli ayrıntıları doldurun, Doğrula'yı ve ardından Kaydet'i seçin.

YAML işlem hattı yapılandırması

İşlem hattı şemasında Azure DevOps web kullanıcı arabirimini veya YAML kodunu kullanarak görevleri yapılandırabilirsiniz.

Uzantı, tümü YAML aracılığıyla erişilebilen üç işlem hattı görevi sağlar:

  • Azure Veri Gezgini Komutu (ADXAdminCommand@5) — ADX kümesinde yönetici/denetim komutlarını çalıştırma
  • Azure Veri Gezgini Sorgusu — BIR ADX kümesinde sorgu çalıştırma ve sonuçları ayrıştırma
  • Azure Veri Gezgini Sorgu Sunucusu Kapısı — Sorgu sonuçlarına göre yayınları kontrol eden aracısız görev

İpucu

Gelişmiş güvenlik için kimlik bilgilerini doğrudan işlem hattınızda depolamak yerine Azure Resource Manager hizmet bağlantısı aracılığıyla İş Yükü Kimlik Federasyonu veya Yönetilen Kimlik kimlik doğrulaması kullanın. Bu anahtarsız kimlik doğrulama yöntemleri önerilen en iyi yöntemdir.

Yönetici komut örneği — satır içi komutlar

Aşağıdaki örnek, İş Yükü Kimlik Federasyonu (WIF) ve Yönetilen Kimlik kimlik doğrulamasını destekleyen bir Azure Resource Manager (ARM) hizmet bağlantısı kullanarak bir satır içi yönetici komutu çalıştırır:

steps:
- task: Azure-Kusto.ADXAdminCommands.PublishToADX.ADXAdminCommand@5
  displayName: 'Run inline ADX admin command'
  inputs:
    clusterUri: 'https://<ClusterName>.<Region>.kusto.windows.net'
    databaseName: '<DatabaseName>'
    commandsSource: 'inline'
    inlineCommands: |
      .create-merge table MyTable (Id:int, Name:string, Timestamp:datetime)
      .create-or-alter function MyFunction() { MyTable | take 10 }
    azureSubscription: '<ARM Service Connection Name>'
  continueOnError: true

Yönetici komut örneği — dosya tabanlı komutlar

Aşağıdaki örnek, AAD Uygulama Kaydı kimlik doğrulamasını kullanarak glob deseni ile eşleşen dosyalardan yönetici komutlarını çalıştırır:

steps:
- task: Azure-Kusto.ADXAdminCommands.PublishToADX.ADXAdminCommand@5
  displayName: 'Deploy schema from files'
  inputs:
    clusterUri: 'https://<ClusterName>.<Region>.kusto.windows.net'
    databaseName: '<DatabaseName>'
    commandsSource: 'files'
    commandFilesPattern: '**/*.csl'
    aadAppId: '$(AAD_APP_ID)'
    aadAppKey: '$(AAD_APP_KEY)'
    aadTenantId: '$(AAD_TENANT_ID)'
  continueOnError: true

Dosya adlandırma kuralınıza bağlı olarak glob deseni olarak da kullanabilirsiniz **/*.kql .

Yönetici komut örneği — Azure Resource Manager hizmet bağlantısı

Aşağıdaki örnek, anahtarsız kimlik doğrulaması için İş Yükü Kimliği Federasyonu (WIF) ve Yönetilen Kimlik'i destekleyen bir Azure Resource Manager hizmet bağlantısı kullanır:

steps:
- task: Azure-Kusto.ADXAdminCommands.PublishToADX.ADXAdminCommand@5
  displayName: 'Deploy schema via ARM service connection'
  inputs:
    clusterUri: 'https://<ClusterName>.<Region>.kusto.windows.net'
    databaseName: '<DatabaseName>'
    commandsSource: 'files'
    commandFilesPattern: '**/*.csl'
    azureSubscription: '<ARM Service Connection Name>'
  continueOnError: true
  condition: ne(variables['ProductVersion'], '')

Görev giriş parametreleri

Aşağıdaki tabloda görevin anahtar giriş parametreleri ADXAdminCommand@5 açıklanmaktadır:

Parametre Açıklama
clusterUri Kusto kümesi için temel URI (örneğin, https://<ClusterName>.<Region>.kusto.windows.net)
databaseName Hedef veritabanının adı
commandsSource Komutların kaynağı: inline satır içi KQL komutları veya files dosya tabanlı komutlar için
inlineCommands Çalıştırılacak satır içi KQL komutları (kullanmak için commandsSource olduğunda inline kullanılır)
commandFilesPattern Betik dosyaları için glob deseni (olduğunda commandsSourcefileskullanılır), örneğin **/*.csl veya **/*.kql
aadAppId AAD Uygulaması kimlik doğrulaması için Microsoft Entra Uygulama (Hizmet Sorumlusu) Kimliği
aadAppKey AAD Uygulaması kimlik doğrulaması için Microsoft Entra Uygulama anahtarı/gizli anahtarı
aadTenantId AAD Uygulaması kimlik doğrulaması için Microsoft Entra kiracı kimliği
azureSubscription ARM tabanlı kimlik doğrulaması için Azure Resource Manager hizmet bağlantısının adı (WIF ve Yönetilen Kimliği destekler)

Kimlik doğrulama yöntemleri

Uzantı aşağıdaki kimlik doğrulama yöntemlerini destekler:

  • Azure Active Directory (AAD) Uygulama Kaydı — Hizmet Sorumlusu ile kimlik doğrulaması yapmak için aadAppId, aadAppKey ve aadTenantId kullanın. Kimlik bilgilerini güvenli işlem hattı değişkenleri olarak depolayın.
  • Sertifika tabanlı kimlik doğrulaması — Hizmet Sorumlusu kimlik doğrulaması için uygulama anahtarı yerine sertifika kullanın. Sertifika ayrıntılarını güvenli işlem hattı değişkenleri olarak depolayın.
  • Yönetilen Kimlik — Yönetilen Kimlik ile yapılandırılmış bir Azure Resource Manager hizmet bağlantısı kullanın. Hizmet bağlantısı adını azureSubscription girişine ayarlayın.
  • İş Yükü Kimliği Federasyonu (WIF) — İş Yükü Kimliği Federasyonu ile Azure Resource Manager hizmet bağlantısı kullanın (otomatik veya el ile). Önerilen anahtarsız yaklaşım budur. Hizmet bağlantısı adı olarak azureSubscription girişini ayarlayın.

Not

İş Yükü Kimlik Federasyonu (WIF), uzantıya daha yeni bir eklemedir. Gizli olmayan kimlik doğrulamasına olanak tanır ve yeni işlem hatları için önerilen yaklaşımdır. Kurulum yönergeleri için bkz. Azure Resource Manager (ARM) hizmet bağlantısında Federasyon Kimliği Kimlik Bilgilerini veya Yönetilen Kimliği kullanma.

Sorgu örneği

steps:
- task: Azure-Kusto.PublishToADX.ADXQuery.ADXQuery@5
  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