Azure Kaynak Grafı sorgu dilini anlama

Azure Kaynak Grafı sorgu dili bir dizi işleç ve işlevi destekler. Her çalışma ve Kusto Sorgu Dili (KQL) temelinde çalışır. Kaynak Grafı tarafından kullanılan sorgu dili hakkında bilgi edinmek için KQL öğreticisiyle başlayın.

Bu makale, Kaynak Grafı tarafından desteklenen dil bileşenlerini kapsar:

tabloları Kaynak Grafı

Kaynak Grafı, Azure Resource Manager kaynak türleri ve özellikleri hakkında depoladıkları veriler için çeşitli tablolar sağlar. Bazı tablolar, ilgili kaynak türlerinden özellikleri almak için veya union işleçleriyle join birlikte kullanılabilir. Kaynak Grafı'de kullanılabilen tabloların listesi aşağıdadır:

tablo Kaynak Grafı Diğer tablolar olabilir mi join ? Description
Kaynaklar Yes Sorguda tanımlı değilse varsayılan tablo. Çoğu Resource Manager kaynak türü ve özelliği buradadır.
ResourceContainers Yes Yönetim grubu (Microsoft.Management/managementGroups), abonelik (Microsoft.Resources/subscriptions) ve kaynak grubu (Microsoft.Resources/subscriptions/resourcegroups) kaynak türlerini ve verilerini içerir.
AdvisorResources Evet (önizleme) ile ilgiliMicrosoft.Advisorkaynakları içerir.
AlertsManagementResources Evet (önizleme) ile ilgiliMicrosoft.AlertsManagementkaynakları içerir.
DesktopVirtualizationResources Yes ile ilgiliMicrosoft.DesktopVirtualizationkaynakları içerir.
ExtendedLocationResources No ile ilgiliMicrosoft.ExtendedLocationkaynakları içerir.
GuestConfigurationResources No ile ilgiliMicrosoft.GuestConfigurationkaynakları içerir.
HealthResources Evet (önizleme) ile ilgiliMicrosoft.ResourceHealth/availabilitystatuseskaynakları içerir.
IoTSecurityResources No ile ilgiliMicrosoft.IoTSecuritykaynakları içerir.
KubernetesConfigurationResources No ile ilgiliMicrosoft.KubernetesConfigurationkaynakları içerir.
MaintenanceResources Kısmi, yalnızca öğesine katıl. (önizleme) ile ilgiliMicrosoft.Maintenancekaynakları içerir.
PatchAssessmentResources No Azure Sanal Makineler düzeltme eki değerlendirmesiyle ilgili kaynakları içerir.
PatchInstallationResources No Azure Sanal Makineler düzeltme eki yüklemeyle ilgili kaynakları içerir.
PolicyResources Yes ile ilgiliMicrosoft.PolicyInsightskaynakları içerir.
RecoveryServicesResources Kısmi, yalnızca öğesine katıl. (önizleme) ve Microsoft.RecoveryServicesile ilgiliMicrosoft.DataProtection kaynakları içerir.
SecurityResources Evet (önizleme) ile ilgiliMicrosoft.Securitykaynakları içerir.
ServiceHealthResources Hayır (önizleme) ile ilgiliMicrosoft.ResourceHealth/eventskaynakları içerir.
WorkloadMonitorResources No ile ilgiliMicrosoft.WorkloadMonitorkaynakları içerir.

Kaynak türleri de dahil olmak üzere tam liste için bkz . Başvuru: Desteklenen tablolar ve kaynak türleri.

Not

Kaynaklar varsayılan tablodur. Resources tablosunu sorgularken, kullanılmadığı veya union kullanılmadığı sürece join tablo adını sağlamak gerekmez. Ancak, önerilen uygulama her zaman ilk tabloyu sorguya eklemektir.

Her tabloda hangi kaynak türlerinin kullanılabilir olduğunu bulmak için portaldaki Kaynak Grafı Gezgini'ni kullanın. Alternatif olarak, verilen Kaynak Grafı tablosunun ortamınızda bulunan desteklediği kaynak türlerinin listesini almak için gibi <tableName> | distinct type bir sorgu kullanın.

Aşağıdaki sorguda basit joinbir gösterilir. Sorgu sonucu sütunları birleştirir ve bu örnekteki ResourceContainers tablosundaki yinelenen sütun adları 1 ile eklenir. ResourceContainers tablosunda hem abonelikler hem de kaynak grupları için türler bulunduğundan, kaynaklar tablosundan kaynağa katılmak için her iki tür de kullanılabilir.

Resources
| join ResourceContainers on subscriptionId
| limit 1

Aşağıdaki sorguda daha karmaşık bir kullanımı gösterilmektedir join. İlk olarak sorgu, Azure Key Vault kasaları kaynak türü için Kaynaklar'dan alanları almak için kullanırproject. Sonraki adım, sonuçları ResourceContainers ile birleştirmek için kullanırjoin. Burada tür, hem ilk tablonun hem de birleştirilen tablonun projectprojectözelliğindeki bir aboneliktir. Özellik Resources'tan zaten yansıtıldığından, alan yeniden adlandırması ad1 olarak eklenmesini önlerjoin. Sorgu sonucu, anahtar kasasının türünü, adını, konumunu ve kaynak grubunu ve içinde bulunduğu aboneliğin adını görüntüleyen tek bir anahtar kasasıdır.

Resources
| where type == 'microsoft.keyvault/vaults'
| project name, type, location, subscriptionId, resourceGroup
| join (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId
| project type, name, location, resourceGroup, SubName
| limit 1

Not

Sonuçları ile projectsınırlandırırkenjoin, yukarıdaki örnekteki subscriptionId olmak üzere iki tabloyu ilişkilendirmek için tarafından join kullanılan özelliğine eklenmelidirproject.

Genişletilmiş özellikler

Önizleme özelliği olarak, Kaynak Grafı'deki kaynak türlerinden bazıları, Azure Resource Manager tarafından sağlanan özelliklerin ötesinde sorgulama yapmak için türle ilgili ek özelliklere sahiptir. Genişletilmiş özellikler olarak bilinen bu değer kümesi, içinde properties.extendeddesteklenen bir kaynak türünde mevcuttur. Hangi kaynak türlerinin genişletilmiş özelliklere sahip olduğunu görmek için aşağıdaki sorguyu kullanın:

Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc

Örnek: tarafından sanal makinelerin instanceView.powerState.codesayısını alma:

Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)

Özel dil öğelerini Kaynak Grafı

Paylaşılan sorgu söz dizimi (önizleme)

Önizleme özelliği olarak paylaşılan sorguya doğrudan bir Kaynak Grafı sorgusunda erişilebilir. Bu senaryo, standart sorguları paylaşılan sorgular olarak oluşturmayı ve bunları yeniden kullanmayı mümkün kılar. Kaynak Grafı sorgunun içinde paylaşılan sorguyu çağırmak için söz dizimini {{shared-query-uri}} kullanın. Paylaşılan sorgunun URI'si, bu sorgunun Ayarlar sayfasındaki paylaşılan sorgunun Kaynak Kimliğidir. Bu örnekte, paylaşılan sorgu URI'miz şeklindedir /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS. Bu URI, başka bir sorguda başvurmak istediğimiz paylaşılan sorgunun aboneliğine, kaynak grubuna ve tam adına işaret ediyor. Bu sorgu , Öğretici: Sorgu oluşturma ve paylaşma bölümünde oluşturulan sorguyla aynıdır.

Not

Paylaşılan sorguya başvuran bir sorguyu paylaşılan sorgu olarak kaydedemezsiniz.

Örnek 1: Yalnızca paylaşılan sorguyu kullanma

Bu Kaynak Grafı sorgunun sonuçları, paylaşılan sorguda depolanan sorguyla aynıdır.

{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}

Örnek 2: Paylaşılan sorguyu daha büyük bir sorgunun parçası olarak ekleme

Bu sorgu önce paylaşılan sorguyu kullanır ve ardından sonuçları daha fazla kısıtlamak için kullanır limit .

{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'

Desteklenen KQL dil öğeleri

Kaynak Grafı KQL veri türlerinin, skaler işlevlerin, skaler işleçlerin ve toplama işlevlerinin bir alt kümesini destekler. Belirli tablosal işleçler, bazıları farklı davranışlara sahip olan Kaynak Grafı tarafından desteklenir.

Desteklenen tablosal/üst düzey işleçler

Belirli örneklerle Kaynak Grafı tarafından desteklenen KQL tablosal işleçlerinin listesi aşağıdadır:

KQL Örnek sorguyu Kaynak Grafı Notlar
Sayısı Anahtar kasalarını sayma
Farklı Depolama alanı içeren kaynakları gösterme
Genişlet -mek Sanal makineleri işletim sistemi türüne göre sayma
Katılın Abonelik adıyla anahtar kasası Desteklenen birleşim tatları: innerunique, inner, leftouter. Tek bir sorguda 3 join sınırı, 1'i çapraz tablo joinolabilir. Tüm çapraz tablo join kullanımı Resource ve ResourceContainers arasındaysa, 3 çapraz tabloya join izin verilir. Yayına katılma gibi özel birleştirme stratejilerine izin verilmez. Hangi tabloların kullanabildiği joiniçin bkz. tabloları Kaynak Grafı.
Sınırı Tüm genel IP adreslerini listele öğesinin eş anlamlısı take. Skip ile çalışmaz.
mvexpand Eski işleç yerine kullanın mv-expand . RowLimit en fazla 400. Varsayılan değer 128'dir.
mv-expand Azure Cosmos DB'nin belirli yazma konumlarını listeleme RowLimit en fazla 400. Varsayılan değer 128'dir. Tek bir sorguda 2 mv-expand sınırı.
order Kaynakları ada göre sıralanmış olarak listeleme Eş anlamlısı sort
parse Sanal ağları ve ağ arabirimlerinin alt ağlarını alma özellikleri kullanmak parseyerine doğrudan erişim sağlamak en uygunudur.
Proje Kaynakları ada göre sıralanmış olarak listeleme
proje dışı Sonuçlardan sütunları kaldırma
Sıralama Kaynakları ada göre sıralanmış olarak listeleme Eş anlamlısı order
Özetle Azure kaynaklarını sayma Yalnızca basitleştirilmiş ilk sayfa
al Tüm genel IP adreslerini listele öğesinin eş anlamlısı limit. Skip ile çalışmaz.
Sayfanın Üstü İlk beş sanal makineyi ada ve işletim sistemi türlerine göre göster
Birliği İki sorgudan elde edilen sonuçları tek bir sonuçta birleştirme İzin verilen tek tablo: T| union [|kind=outerinner] [withsource=ColumnName] Tablo. Tek bir sorguda 3 union bacak sınırı. Bacak masalarının bulanık çözünürlüğüne union izin verilmez. Tek bir tablo içinde veya Resources ve ResourceContainers tabloları arasında kullanılabilir.
Nerede Depolama alanı içeren kaynakları gösterme

Tek bir Kaynak Grafı SDK sorgusunda varsayılan 3 join ve 3 mv-expand işleç sınırı vardır. Yardım + destek aracılığıyla kiracınız için bu sınırların artırılmasını isteyebilirsiniz.

"Open Query" portal deneyimini desteklemek için Azure Kaynak Grafı Gezgini'nin genel sınırı Kaynak Grafı SDK'dan daha yüksektir.

Sorgu kapsamı

Kaynakların bir sorgu tarafından döndürüldiği aboneliklerin veya yönetim gruplarının kapsamı, yetkili kullanıcının bağlamını temel alan bir abonelik listesi olarak varsayılan olarak kullanılır. Bir yönetim grubu veya abonelik listesi tanımlanmamışsa, sorgu kapsamı Azure Lighthouse tarafından atanan kaynakları içeren tüm kaynaklardır.

Sorgulanacak aboneliklerin veya yönetim gruplarının listesi, sonuçların kapsamını değiştirmek için el ile tanımlanabilir. Örneğin, REST API managementGroups özelliği yönetim grubunun adından farklı olan yönetim grubu kimliğini alır. Belirtildiğinde managementGroups , belirtilen yönetim grubu hiyerarşisindeki veya altındaki ilk 5.000 abonelikten kaynaklar dahil edilir. managementGroups ile aynı anda subscriptionskullanılamaz.

Örnek: 'My Management Group' adlı yönetim grubunun hiyerarşisi içindeki tüm kaynakları 'myMG' kimliğiyle sorgulayın.

  • REST API URI'si

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
    
  • İstek Gövdesi

    {
        "query": "Resources | summarize count()",
        "managementGroups": ["myMG"]
    }
    

parametresi, AuthorizationScopeFilter üst kapsamlardan devralınan Azure İlkesi atamaları listelemenizi sağlar. AuthorizationScopeFilter parametresi aşağıdaki değerleri kabul eder:

  • AtScopeAndBelow (belirtilmezse varsayılan): Verilen kapsam ve tüm alt kapsamlar için ilke atamalarını döndürür
  • AtScopeAndAbove: Verilen kapsam ve tüm üst kapsamlar için ilke atamalarını döndürür, ancak alt kapsamları döndürmez
  • AtScopeAboveAndBelow: Verilen kapsam, tüm üst kapsamlar ve tüm alt kapsamlar için ilke atamalarını döndürür
  • AtScopeExact: Yalnızca verilen kapsam için ilke atamalarını döndürür; hiçbir üst veya alt kapsam dahil değildir

Not

parametresini AuthorizationScope kullanmak için isteklerinizde 2021-06-01-preview API sürümüne başvurarak emin olun.

Örnek: myMG yönetim grubu ve Kiracı Kökü (üst) kapsamlarında tüm ilke atamalarını alın.

  • REST API URI'si

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
    
  • İstek Gövdesi Örneği

    {
        "authorizationScopeFilter": "AtScopeAndAbove",
        "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'",
        "managementGroups": ["myMG"]
    }
    

Örnek: mySubscriptionId aboneliği, yönetim grubu ve Kiracı Kök kapsamlarında tüm ilke atamalarını alın.

  • REST API URI'si

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
    
  • İstek Gövdesi Örneği

    {
        "authorizationScopeFilter": "AtScopeAndAbove",
        "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'",
        "subscriptions": ["mySubscriptionId"]
    }
    

Kaçış karakterleri

veya $içerenler . gibi bazı özellik adlarının sorguda sarmalanması veya kaçış karakterine sahip olması gerekir, aksi halde özellik adı yanlış yorumlanır ve beklenen sonuçları sağlamaz.

  • . - Özellik adını şöyle sarmala: ['propertyname.withaperiod']

    odata.type özelliğini kaydıran örnek sorgu:

    where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
    
  • $ - Özellik adındaki karakterden kaçış karakteri. Kullanılan kaçış karakteri, Kaynak Grafı çalıştırılacak olan kabuğa bağlıdır.

    • bash - \

      Bash'te $type özelliğinden kaçan örnek sorgu:

      where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
      
    • cmd - Karakterden $ kaçmayın.

    • Powershell - `

      PowerShell'de özellik $type kaçan örnek sorgu:

      where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
      

Sonraki adımlar