Azure Kaynak Grafı sorgu dilini anlama
Azure Kaynak Grafı için sorgu dili birçok işleci 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. Kaynak Grafı tabloları işleciyle birlikte join
kullanarak ilgili kaynak türlerinden özellikleri alabilirsiniz.
Kaynak Grafı tablolar tatları join
destekler:
Kaynak Grafı tablosu | Diğer tablolar olabilir mi join ? |
Açıklama |
---|---|---|
AdvisorResources | Yes | ile ilgili Microsoft.Advisor kaynakları içerir. |
AlertsManagementResources | Yes | ile ilgili Microsoft.AlertsManagement kaynakları içerir. |
AppServiceResources | Yes | ile ilgili Microsoft.Web kaynakları içerir. |
AuthorizationResources | Yes | ile ilgili Microsoft.Authorization kaynakları içerir. |
AWSResources | Yes | ile ilgili Microsoft.AwsConnector kaynakları içerir. |
AzureBusinessContinuityResources | Yes | ile ilgili Microsoft.AzureBusinessContinuity kaynakları içerir. |
ChaosResources | Yes | ile ilgili Microsoft.Chaos kaynakları içerir. |
CommunityGalleryResources | Yes | ile ilgili Microsoft.Compute kaynakları içerir. |
ComputeResources | Yes | Sanal Makine Ölçek Kümeleri ile ilgili Microsoft.Compute kaynakları içerir. |
DesktopVirtualizationResources | Yes | ile ilgili Microsoft.DesktopVirtualization kaynakları içerir. |
DnsResources | Yes | ile ilgili Microsoft.Network kaynakları içerir. |
EdgeOrderResources | Yes | ile ilgili Microsoft.EdgeOrder kaynakları içerir. |
ElasticsanResources | Yes | ile ilgili Microsoft.ElasticSan kaynakları içerir. |
ExtendedLocationResources | Yes | ile ilgili Microsoft.ExtendedLocation kaynakları içerir. |
FeatureResources | Yes | ile ilgili Microsoft.Features kaynakları içerir. |
GuestConfigurationResources | Yes | ile ilgili Microsoft.GuestConfiguration kaynakları içerir. |
HealthResourceChanges | Yes | ile ilgili Microsoft.Resources kaynakları içerir. |
HealthResources | Yes | ile ilgili Microsoft.ResourceHealth kaynakları içerir. |
İçgörülerKaynaklar | Yes | ile ilgili Microsoft.Insights kaynakları içerir. |
IoTSecurityResources | Yes | ve Microsoft.IoTFirmwareDefense ile ilgili Microsoft.IoTSecurity kaynakları içerir. |
KubernetesConfigurationResources | Yes | ile ilgili Microsoft.KubernetesConfiguration kaynakları içerir. |
KustoResources | Yes | ile ilgili Microsoft.Kusto kaynakları içerir. |
MaintenanceResources | Yes | ile ilgili Microsoft.Maintenance kaynakları içerir. |
ManagedServicesResources | Yes | ile ilgili Microsoft.ManagedServices kaynakları içerir. |
MigrateResources | Yes | ile ilgili Microsoft.OffAzure kaynakları içerir. |
NetworkResources | Yes | ile ilgili Microsoft.Network kaynakları içerir. |
OrbitalResources | Yes | ile ilgili Microsoft.Orbital kaynakları içerir. |
PatchAssessmentResources | Yes | Azure Sanal Makineler düzeltme eki değerlendirmesi Microsoft.Compute ve Microsoft.HybridCompute ile ilgili kaynakları içerir. |
PatchInstallationResources | Yes | Azure Sanal Makineler düzeltme eki yükleme Microsoft.Compute ve Microsoft.HybridCompute ile ilgili kaynakları içerir. |
İlkeKaynaklar | Yes | ile ilgili Microsoft.PolicyInsights kaynakları içerir. |
RecoveryServicesResources | Yes | ve Microsoft.RecoveryServices ile ilgili Microsoft.DataProtection kaynakları içerir. |
ResourceChanges | Yes | ile ilgili Microsoft.Resources kaynakları içerir. |
ResourceContainerChanges | Yes | ile ilgili Microsoft.Resources kaynakları içerir. |
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. |
Kaynaklar | Yes | Sorguda tablo tanımlanmamışsa varsayılan tablo. Resource Manager kaynak türlerinin ve özelliklerinin çoğu buradadır. |
SecurityResources | Yes | ile ilgili Microsoft.Security kaynakları içerir. |
ServiceFabricResources | Yes | ile ilgili Microsoft.ServiceFabric kaynakları içerir. |
ServiceHealthResources | Yes | ile ilgili Microsoft.ResourceHealth/events kaynakları içerir. |
SpotResources | Yes | ile ilgili Microsoft.Compute kaynakları içerir. |
SupportResources | Yes | ile ilgili Microsoft.Support kaynakları içerir. |
EtiketlerKaynaklar | Yes | ile ilgili Microsoft.Resources/tagnamespaces kaynakları içerir. |
Kaynak türlerini içeren tabloların listesi için Azure Kaynak Grafı tablosuna ve kaynak türü başvurusuna gidin.
Not
Resources
varsayılan tablodur. Tabloyu sorgularkenResources
, kullanılmadığı veya union
kullanılmadığı sürece join
tablo adını sağlamak gerekmez. Ancak önerilen uygulama, ilk tabloyu her zaman 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 join
bir 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 olduğundan, tablodan Resources
kaynağa katılmak için 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üne ait alanları Resources
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 project
project
özelliğindeki bir aboneliktir. Özelliği zaten kaynağından yansıtıldığından, alan yeniden adlandırma, ad1 olarak eklenmesini Resources
ö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 project
sınırlandırırkenjoin
, yukarıdaki örnekteki subscriptionId olmak üzere iki tabloyu ilişkilendirmek için tarafından join
kullanılan özelliğine project
dahil edilmelidir.
Genişletilmiş özellikler
Önizleme özelliği olarak, Kaynak Grafı'daki kaynak türlerinden bazıları, Azure Resource Manager tarafından sağlanan özelliklerin ötesinde sorgu yapmak için kullanılabilen türle ilgili daha fazla özelliğe sahiptir. Genişletilmiş özellikler olarak bilinen bu değer kümesi, içinde properties.extended
desteklenen bir kaynak türünde bulunur. Genişletilmiş özelliklere sahip kaynak türlerini göstermek için aşağıdaki sorguyu kullanın:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Örnek: ile sanal makinelerin instanceView.powerState.code
sayı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, paylaşılan sorgular olarak standart sorgular 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 kullanın:
Bu Kaynak Grafı sorgusunun 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 ekleyin:
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 tablo işleçlerinin listesi aşağıdadır:
KQL | Örnek sorguyu Kaynak Grafı | Notlar |
---|---|---|
count | Anahtar kasalarını sayma | |
Farklı | Depolama içeren kaynakları göster | |
uzatmak | Sanal makineleri işletim sistemi türüne göre sayma | |
join | Abonelik adıyla anahtar kasası | Desteklenen birleşim tatları: innerunique, inner, leftouter ve fullouter. Tek bir sorguda üç join sınırı vardır ve bunlardan biri çapraz tablo join olabilir. Tüm çapraz tablo join kullanımı Resource ve ResourceContainers arasındaysa, üç çapraz tabloya join izin verilir. Yayına katılma gibi özel birleştirme stratejilerine izin verilmez. hangi tabloların kullanabileceği join tablolar için Kaynak Grafı tablolara gidin. |
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 2.000. Varsayılan değer 128'dir. |
|
mv-expand | Azure Cosmos DB'nin belirli yazma konumlarını listeleme | RowLimit en fazla 2.000. Varsayılan değer 128'dir. Tek bir sorguda 3 mv-expand sınırı. |
order | Ada göre sıralanmış kaynakları listeleme | Eş anlamlısı sort |
ayrıştırmak | Ağ arabirimlerinin sanal ağlarını ve alt ağlarını alma | özellikleri kullanmak parse yerine varsa doğrudan erişmek en uygunudur. |
proje | Ada göre sıralanmış kaynakları listeleme | |
proje dışı | Sonuçlardan sütunları kaldırma | |
sıralayın | Ada göre sıralanmış kaynakları listeleme | Eş anlamlısı order |
Özetle | Azure kaynaklarını sayma | Yalnızca basitleştirilmiş ilk sayfa |
almak | Tüm genel IP adreslerini listele | öğesinin eş anlamlısı limit . Skip ile çalışmaz. |
Sayfanın Üstü | Ada ve işletim sistemi türüne göre ilk beş sanal makineyi gösterme | |
sendika | İki sorgudan elde edilen sonuçları tek bir sonuçta birleştirme | Tek tabloya izin verilir: | union [kind= inner|outer] [withsource=ColumnName] Table . Tek bir sorguda üç 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 içeren kaynakları göster |
Tek bir Kaynak Grafı SDK sorgusunda varsayılan olarak üç join
ve üç mv-expand
işleç sınırı vardır. Yardım + destek aracılığıyla kiracınız için bu sınırlarda bir artış isteyebilirsiniz.
Açık Sorgu portalı deneyimini desteklemek için Azure Kaynak Grafı Gezgini'nin genel sınırı Kaynak Grafı SDK'dan daha yüksektir.
Not
Bir tabloya birden çok kez sağ tablo olarak başvuramazsınız ve bu da 1 sınırını aşıyor. Bunu yaparsanız, DisallowedMaxNumberOfRemoteTables koduyla bir hata alırsınız.
Sorgu kapsamı
Kaynakların 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ı tüm kaynaklardır ve Azure Lighthouse tarafından atanan kaynakları içerir.
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 10.000 abonelikteki kaynaklar eklenir. managementGroups
ile aynı anda subscriptions
kullanılamaz.
Örnek: Kimliği myMG
ile adlı My Management Group
yönetim grubunun hiyerarşisi içindeki tüm kaynakları 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 tablodaki AuthorizationResources
Azure İlkesi atamalarını ve Azure rol tabanlı erişim denetimi (Azure RBAC) rol atamalarını listelemenizi sağlar. AuthorizationScopeFilter
parametresi ve AuthorizationResources
tabloları için PolicyResources
aşağıdaki değerleri kabul eder:
- AtScopeAndBelow (belirtilmezse varsayılan): Verilen kapsam ve tüm alt kapsamlar için atamaları döndürür.
- AtScopeAndAbove: Verilen kapsam ve tüm üst kapsamlar için atamaları döndürür, ancak alt kapsamları döndürmez.
- AtScopeAboveAndBelow: Verilen kapsam, tüm üst kapsamlar ve tüm alt kapsamlar için atamaları döndürür.
- AtScopeExact: Yalnızca verilen kapsam için atamaları döndürür; üst veya alt kapsam dahil değildir.
Not
parametresini AuthorizationScopeFilter
kullanmak için isteklerinizde 2021-06-01-preview veya üzeri API sürümünü kullandığınızdan emin olun.
Örnek: myMG yönetim grubunda 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
{ "options": { "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
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Kaçış karakterleri
veya $
içerenler .
gibi bazı özellik adları sorguda sarmalanmalıdır veya kaçılmalıdır veya özellik adı yanlış yorumlanır ve beklenen sonuçları sağlamaz.
Nokta (
.
): Köşeli ayraç kullanarak özellik adını['propertyname.withaperiod']
sarmalar.odata.type özelliğini kaydıran örnek sorgu:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
Dolar işareti (
$
): Özellik adındaki karakterden kaçış. Kullanılan kaçış karakteri, Kaynak Grafı çalıştıran kabuğa bağlıdır.Bash: Kaçış karakteri olarak ters eğik çizgi (
\
) kullanın.Bash'te $type özelliğinden kaçan örnek sorgu:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
cmd: Dolar işareti (
$
) karakterinden kaçmayın.PowerShell: Kaçış karakteri olarak bir backtick (
`
) kullanın.PowerShell'de özellik $type kaçış örnek sorgu:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Sonraki adımlar
- Azure Kaynak Grafı sorgu dili Starter sorguları ve Gelişmiş sorgular.
- Azure kaynaklarını keşfetme hakkında daha fazla bilgi edinin.