Memahami bahasa kueri Azure Resource Graph
Bahasa kueri untuk Azure Resource Graph mendukung banyak operator dan fungsi. Masing-masing bekerja dan beroperasi berdasarkan Kusto Query Language (KQL). Untuk mempelajari tentang bahasa kueri yang digunakan oleh Resource Graph, mulailah dengan tutorial untuk KQL.
Artikel ini mencakup komponen bahasa yang didukung oleh Resource Graph:
Tabel Resource Graph
Grafik Sumber Daya menyediakan beberapa tabel untuk data yang disimpannya tentang jenis sumber daya Azure Resource Manager dan propertinya. Beberapa tabel dapat digunakan dengan operator join
atau union
untuk mendapatkan properti dari jenis sumber daya terkait. Berikut adalah daftar tabel yang tersedia di Resource Graph:
Tabel Resource Graph | Bisakah join tabel lainnya? |
Deskripsi |
---|---|---|
Sumber | Ya | Tabel default jika tidak ada yang ditentukan dalam kueri. Sebagian besar jenis sumber daya dan properti Resource Manager ada di sini. |
ResourceContainers | Ya | Mencakup jenis dan data sumber daya grup manajemen (Microsoft.Management/managementGroups ) langganan (Microsoft.Resources/subscriptions ) dan grup sumber daya (Microsoft.Resources/subscriptions/resourcegroups ). |
AdvisorResources | Yes (pratinjau) | Mencakup sumber daya terkait dengan Microsoft.Advisor . |
AlertsManagementResources | Yes (pratinjau) | Mencakup sumber daya terkait dengan Microsoft.AlertsManagement . |
DesktopVirtualizationResources | Ya | Mencakup sumber daya terkait dengan Microsoft.DesktopVirtualization . |
ExtendedLocationResources | Tidak | Mencakup sumber daya terkait dengan Microsoft.ExtendedLocation . |
GuestConfigurationResources | Tidak | Mencakup sumber daya terkait dengan Microsoft.GuestConfiguration . |
HealthResources | Yes (pratinjau) | Mencakup sumber daya terkait dengan Microsoft.ResourceHealth/availabilitystatuses . |
IoTSecurityResources | Tidak | Mencakup sumber daya terkait dengan Microsoft.IoTSecurity . |
KubernetesConfigurationResources | Tidak | Mencakup sumber daya terkait dengan Microsoft.KubernetesConfiguration . |
MaintenanceResources | Sebagian, bergabung ke saja. (pratinjau) | Mencakup sumber daya terkait dengan Microsoft.Maintenance . |
PatchAssessmentResources | Tidak | Mencakup sumber daya terkait dengan penilaian patch Azure Virtual Machines. |
PatchInstallationResources | Tidak | Mencakup sumber daya terkait dengan penginstalan patch Azure Virtual Machines. |
PolicyResources | Ya | Mencakup sumber daya terkait dengan Microsoft.PolicyInsights . |
RecoveryServicesResources | Sebagian, bergabung ke saja. (pratinjau) | Mencakup sumber daya terkait dengan Microsoft.DataProtection dan Microsoft.RecoveryServices . |
SecurityResources | Yes (pratinjau) | Mencakup sumber daya terkait dengan Microsoft.Security . |
ServiceHealthResources | Tidak (pratinjau) | Mencakup sumber daya terkait dengan Microsoft.ResourceHealth/events . |
WorkloadMonitorResources | Tidak | Mencakup sumber daya terkait dengan Microsoft.WorkloadMonitor . |
Untuk daftar lengkap, termasuk jenis sumber daya, lihat Referensi: Tabel dan jenis sumber daya yang didukung.
Catatan
Sumber daya adalah tabel default. Saat mengkueri tabel Sumber Daya, nama tabel tidak perlu diberikan kecuali join
atau union
digunakan. Namun, praktik yang disarankan adalah selalu menyertakan tabel awal dalam kueri.
Gunakan Penjelajah Resource Graph di portal untuk menemukan jenis sumber daya apa yang tersedia di setiap tabel. Sebagai alternatif, gunakan kueri seperti <tableName> | distinct type
untuk mendapatkan daftar jenis sumber daya yang didukung oleh tabel Resource Graph yang ada di lingkungan Anda.
Kueri berikut menunjukkan join
sederhana. Hasil kueri menyatukan kolom dan setiap nama kolom duplikat dari tabel yang digabungkan, ResourceContainers dalam contoh ini, ditambahkan dengan 1. Karena tabel ResourceContainers memiliki jenis untuk langganan dan grup sumber daya, kedua jenis tersebut dapat digunakan untuk bergabung ke sumber daya dari tabel Sumber Daya.
Resources
| join ResourceContainers on subscriptionId
| limit 1
Kueri berikut menunjukkan penggunaan join
yang lebih kompleks. Pertama, kueri menggunakan project
untuk mendapatkan bidang dari Sumber Daya untuk jenis sumber daya brankas Azure Key Vault. Langkah berikutnya menggunakan join
untuk menggabungkan hasil dengan ResourceContainers dengan jenis langganan pada properti yang ada di tabel pertama project
dan tabel gabungan project
. Penggantian nama bidang menghindari join
menambahkannya sebagai nama1 karena properti sudah diproyeksikan dari Sumber Daya. Hasil kueri adalah jenis tampilan kubah kunci tunggal, nama, lokasi, dan grup sumber daya brankas kunci, bersama dengan nama langganan tempat penyimpanannya.
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
Catatan
Saat membatasi hasil join
dengan project
, properti yang digunakan oleh join
untuk menghubungkan dua tabel, subscriptionId dalam contoh di atas, harus disertakan dalam project
.
Properti yang diperluas
Sebagai fitur pratinjau, beberapa jenis sumber daya di Resource Graph memiliki lebih banyak properti terkait jenis yang tersedia untuk kueri di luar properti yang disediakan oleh Azure Resource Manager. Kumpulan nilai ini, yang dikenal sebagai properti yang diperluas, ada pada jenis sumber daya yang didukung di properties.extended
. Untuk melihat jenis sumber daya mana yang memiliki properti yang diperluas, gunakan kueri berikut:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Contoh: Dapatkan hitungan komputer virtual dengan instanceView.powerState.code
:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Elemen bahasa khusus Resource Graph
Sintaksis kueri bersama (pratinjau)
Sebagai fitur pratinjau, kueri bersama dapat diakses langsung di kueri Resource Graph. Skenario ini memungkinkan untuk membuat kueri standar sebagai kueri bersama dan menggunakannya kembali. Untuk memanggil kueri bersama di dalam kueri Resource Graph, gunakan sintaksis {{shared-query-uri}}
. URI kueri bersama adalah ID Sumber Daya kueri bersama pada halaman Pengaturan untuk kueri tersebut. Dalam contoh ini, URI kueri bersama kita adalah /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS
.
URI ini mengarah ke langganan, grup sumber daya, dan nama lengkap kueri bersama yang ingin kita rujuk di kueri lain. Kueri ini sama dengan yang dibuat di Tutorial: Buat dan bagikan kueri.
Catatan
Anda tidak dapat menyimpan kueri yang merujuk kueri bersama sebagai kueri bersama.
Contoh 1: Gunakan hanya kueri bersama
Hasil kueri Resource Graph ini sama dengan kueri yang disimpan dalam kueri bersama.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Contoh 2: Sertakan kueri bersama sebagai bagian dari kueri yang lebih besar
Kueri ini pertama-tama menggunakan kueri bersama, lalu menggunakan limit
untuk lebih membatasi hasil.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Elemen bahasa KQL yang didukung
Resource Graph mendukung subset KQL jenis data, fungsi skalar, operator skalar, dan fungsi agregasi. Operator tabular tertentu didukung oleh Resource Graph, beberapa di antaranya memiliki perilaku yang berbeda.
Operator tabular/tingkat atas yang didukung
Berikut adalah daftar operator tabular KQL yang didukung oleh Resource Graph dengan sampel tertentu:
KQL | Kueri sampel Resource Graph | Catatan |
---|---|---|
hitung | Hitungan brankas kunci | |
distinct | Menampilkan sumber daya yang berisi penyimpanan | |
perpanjang | Menghitung komputer virtual berdasarkan jenis OS | |
gabung | Key vault dengan nama langganan | Gabung versi yang didukung: innerunique, inner, leftouter. Batas 3 join dalam satu kueri, 1 di antaranya dapat berupa tabel silang join . Jika semua penggunaan join tabel silang antara Sumber Daya dan ResourceContainers, maka 3 tabel silang join diperbolehkan. Strategi bergabung khusus, seperti bergabung dengan siaran, tidak diizinkan. Untuk tabel mana yang dapat menggunakan join , lihat tabel Resource Graph. |
batas | Mencantumkan semua alamat IP publik | Sinonim dari take . Tidak berfungsi dengan Lewati. |
mvexpand | Operator lama, gunakan mv-expand sebagai gantinya. RowLimit maksimal 400. Defaultnya adalah 128. |
|
mv-expand | Mencantumkan Azure Cosmos DB dengan lokasi penulisan tertentu | RowLimit maksimal 400. Defaultnya adalah 128. Batas 2 mv-expand dalam satu kueri. |
urutan | Mencantumkan sumber daya yang diurutkan menurut nama | Sinonim dari sort |
Mengurai | Mendapatkan jaringan virtual dan subnet antarmuka jaringan | Sangat optimal untuk mengakses properti secara langsung jika ada daripada menggunakan parse . |
proyek | Mencantumkan sumber daya yang diurutkan menurut nama | |
project-away | Menghapus kolom dari hasil | |
urutkan | Mencantumkan sumber daya yang diurutkan menurut nama | Sinonim dari order |
meringkas | Hitung sumber daya Azure | Hanya halaman pertama yang disederhanakan |
ambil | Mencantumkan semua alamat IP publik | Sinonim dari limit . Tidak berfungsi dengan Lewati. |
teratas | Tampilkan lima komputer virtual pertama berdasarkan nama dan jenis OS-nya | |
union | Menggabungkan hasil dari dua kueri menjadi satu hasil | Tabel tunggal diizinkan: T| union [kind= inner |outer ] [withsource= ColumnName] Tabel. Batas 3 union kaki dalam satu kueri. Resolusi fuzzy dari union tabel kaki tidak diizinkan. Dapat digunakan dalam satu tabel atau di antara tabel Sumber Daya dan ResourceContainers. |
di mana | Menampilkan sumber daya yang berisi penyimpanan |
Ada batas default 3 join
dan 3 mv-expand
operator dalam satu kueri SDK Resource Graph. Anda dapat meminta peningkatan batas ini untuk penyewa Anda melalui Bantuan + dukungan.
Untuk mendukung pengalaman portal "Buka Kueri", Penjelajah Azure Resource Graph memiliki batas global yang lebih tinggi daripada Resource Graph SDK.
Cakupan kueri
Cakupan langganan atau grup manajemen dari mana sumber daya dikembalikan oleh default kueri ke daftar langganan berdasarkan konteks pengguna yang diotorisasi. Jika grup manajemen atau daftar langganan tidak ditentukan, cakupan kueri adalah semua sumber daya, yang mencakup sumber daya yang didelegasikan Azure Lighthouse.
Daftar langganan atau grup manajemen yang diminta dapat didefinisikan secara manual untuk mengubah ruang lingkup hasil. Contoh, properti managementGroups
REST API mengambil ID grup pengelolaan, yang berbeda dari nama grup pengelolaan. Ketika managementGroups
ditentukan, sumber daya dari 10.000 langganan pertama di atau di bawah hierarki grup manajemen yang ditentukan disertakan. managementGroups
tidak dapat digunakan bersamaan dengan subscriptions
.
Contoh: Kueri semua sumber daya dalam hierarki grup manajemen bernama My Management Group
dengan ID myMG
.
URI REST API
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
Isi Permintaan
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
Parameter memungkinkan AuthorizationScopeFilter
Anda mencantumkan penetapan Azure Policy dan penetapan peran Azure RBAC dalam AuthorizationResources
tabel yang diwarisi dari cakupan atas. Parameter AuthorizationScopeFilter
menerima nilai berikut untuk PolicyResources
tabel dan AuthorizationResources
:
- AtScopeAndBelow (default jika tidak ditentukan): Mengembalikan penugasan untuk cakupan yang diberikan dan semua cakupan anak
- AtScopeAndAbove: Mengembalikan penugasan untuk cakupan yang diberikan dan semua cakupan induk, tetapi bukan cakupan anak
- AtScopeAboveAndBelow: Mengembalikan tugas untuk cakupan yang diberikan, semua cakupan induk, dan semua cakupan anak
- AtScopeExact: Mengembalikan penugasan hanya untuk cakupan yang diberikan; tidak ada cakupan induk atau anak yang disertakan
Catatan
Untuk menggunakan AuthorizationScopeFilter
parameter , pastikan untuk menggunakan versi API 2021-06-01-preview atau yang lebih baru dalam permintaan Anda.
Contoh: Dapatkan semua penugasan kebijakan di grup manajemen myMG dan lingkup Akar Penyewa (atas).
REST API URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Minta Sampel Isi
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Contoh: Dapatkan semua penugasan kebijakan di langganan mySubscriptionId, grup manajemen, dan lingkup Akar Penyewa.
REST API URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Minta Sampel Isi
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Karakter escape
Beberapa nama properti, seperti yang menyertakan .
atau $
, harus dibungkus atau diescape dalam kueri atau nama properti diinterpretasikan secara salah dan tidak memberikan hasil yang diharapkan.
.
- Bungkus nama properti seperti:['propertyname.withaperiod']
Contoh kueri yang membungkus properti odata.type:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
$
- Escape karakter dalam nama properti. Karakter escape yang digunakan tergantung pada shell yang berjalan Resource Graph.bash -
\
Contoh kueri yang keluar dari properti $type di Bash:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
cmd - Jangan meng-escape karakter
$
.PowerShell -
`
Contoh kueri yang keluar dari properti $type di PowerShell:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Langkah berikutnya
- Lihat bahasa yang digunakan dalam kueri Starter.
- Lihat penggunaan tingkat lanjut dalam Kueri tingkat lanjut.
- Pelajari selengkapnya tentang cara menjelajahi sumber daya.