Sampel kueri Resource Graph pemula

Langkah pertama untuk memahami kueri dengan Azure Resource Graph adalah pemahaman dasar tentang Bahasa Kueri. Jika Anda belum terbiasa dengan Bahasa Kueri Kusto (KQL), sebaiknya tinjau tutorial untuk KQL untuk memahami cara menyusun permintaan untuk sumber daya yang Anda cari.

Kami akan menelusuri kueri pemula berikut:

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Dukungan bahasa

Azure CLI (melalui ekstensi) dan Azure PowerShell (melalui modul) mendukung Azure Resource Graph. Sebelum menjalankan salah satu kueri berikut, periksa apakah lingkungan Anda sudah siap. Lihat Azure CLI dan Azure PowerShell untuk langkah-langkah memasang dan memvalidasi lingkungan shell pilihan Anda.

Menghitung sumber daya Azure

Kueri ini mengembalikan jumlah sumber daya Azure yang ada di langganan yang dapat Anda akses. Ini juga merupakan kueri yang baik untuk memvalidasi shell pilihan Anda menginstal komponen Azure Resource Graph yang sesuai dan sesuai urutan kerja.

Resources
| summarize count()
az graph query -q "Resources | summarize count()"

Menghitung sumber daya Key Vault

Kueri menggunakan count bukan summarize untuk menghitung jumlah data yang dihasilkan. Hanya brankas kunci yang disertakan dalam hitungan.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| count
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | count"

Mencantumkan sumber daya yang diurutkan menurut nama

Kueri ini mengembalikan tipe sumber daya apa pun, tetapi hanya properti nama, jenis, dan lokasi. Ini digunakan order by untuk mengurutkan properti menurut properti nama dalam urutan naik (asc).

Resources
| project name, type, location
| order by name asc
az graph query -q "Resources | project name, type, location | order by name asc"

Menampilkan semua komputer virtual yang diurutkan berdasarkan urutan menurun

Untuk mencantumkan hanya komputer virtual (yang berjenis Microsoft.Compute/virtualMachines), kita dapat mencocokkan jenis properti dalam hasil. Mirip dengan kueri sebelumnya desc, mengubah order by menjadi menurun. =~ dalam jenis ini memberitahukan Resource Graph agar peka huruf besar/kecil.

Resources
| project name, location, type
| where type =~ 'Microsoft.Compute/virtualMachines'
| order by name desc
az graph query -q "Resources | project name, location, type| where type =~ 'Microsoft.Compute/virtualMachines' | order by name desc"

Menampilkan lima komputer virtual pertama berdasarkan nama dan jenis OS-nya

Kueri ini akan menggunakantop untuk hanya mengambil lima data yang cocok yang diurutkan berdasarkan nama. Jenis sumber daya Azure adalah Microsoft.Compute/virtualMachines. project memberi tahu Azure Resource Graph properti mana yang akan disertakan.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project name, properties.storageProfile.osDisk.osType
| top 5 by name desc
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project name, properties.storageProfile.osDisk.osType | top 5 by name desc"

Menghitung komputer virtual berdasarkan jenis OS

Membangun kueri sebelumnya, kami masih membatasi sumber daya jenis Azure Microsoft.Compute/virtualMachines, tetapi tidak lagi membatasi jumlah rekaman yang dikembalikan. Sebaliknya, kami menggunakan summarize dan count() untuk menentukan cara mengelompokkan dan menggabungkan nilai menurut properti, yang dalam contoh ini adalah properties.storageProfile.osDisk.osType. Untuk contoh tampilan string ini di objek lengkap, lihat menjelajahi sumber daya - penemuan komputer virtual.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| summarize count() by tostring(properties.storageProfile.osDisk.osType)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"

Cara lain untuk menulis kueri yang sama adalah dengan extend properti dan memberinya nama sementara untuk digunakan dalam kueri, dalam hal ini os. os kemudian digunakan oleh summarize dan count() seperti pada contoh sebelumnya.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| extend os = properties.storageProfile.osDisk.osType
| summarize count() by tostring(os)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | extend os = properties.storageProfile.osDisk.osType | summarize count() by tostring(os)"

Catatan

Ketahuilah bahwa meskipun =~ memungkinkan pencocokan tidak peka huruf besar atau kecil, penggunaan properti (seperti properties.storageProfile.osDisk.osType) dalam kueri mengharuskan huruf besar/kecil tersebut benar. Jika properti adalah huruf besar/kecil yang salah, nilai null atau salah dikembalikan dan pengelompokan atau ringkasan akan salah.

Menampilkan sumber daya yang berisi penyimpanan

Alih-alih mendefinisikan jenis yang akan dicocokkan secara eksplisit, kueri contoh ini akan menemukan sumber daya Azure apa pun dengan contains kata penyimpanan.

Resources
| where type contains 'storage' | distinct type
az graph query -q "Resources | where type contains 'storage' | distinct type"

Mencantumkan semua alamat IP publik

Mirip dengan kueri sebelumnya, temukan semua yang merupakan jenis dengan kata publicIPAddresses. Kueri ini memperluas pola tersebut untuk hanya menyertakan hasil dengan properties.ipAddressisnotempty, hanya menampilkan properties.ipAddress, dan ke limit hasil dengan 100 teratas. Anda mungkin perlu menghindari tanda kutip tergantung pada shell yang Anda pilih.

Resources
| where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
| project properties.ipAddress
| limit 100
az graph query -q "Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | project properties.ipAddress | limit 100"

Menghitung sumber daya yang memiliki alamat IP yang dikonfigurasi oleh langganan

Menggunakan contoh kueri sebelumnya dan menambahkan summarize dan count(), kita bisa mendapatkan daftar berdasarkan langganan sumber daya dengan alamat IP yang dikonfigurasi.

Resources
| where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
| summarize count () by subscriptionId
az graph query -q "Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | summarize count () by subscriptionId"

Mencantumkan sumber daya dengan nilai tag tertentu

Kita dapat membatasi hasil berdasarkan properti selain jenis sumber daya Azure, seperti tag. Dalam contoh ini, kami memfilter sumber daya Azure dengan nama tag Lingkungan yang memiliki nilai Internal.

Resources
| where tags.environment=~'internal'
| project name
az graph query -q "Resources | where tags.environment=~'internal' | project name"

Untuk juga menyediakan tag apa yang memiliki sumber daya dan nilainya, tambahkan tag properti ke kata kunci project.

Resources
| where tags.environment=~'internal'
| project name, tags
az graph query -q "Resources | where tags.environment=~'internal' | project name, tags"

Mencantumkan semua akun penyimpanan dengan nilai tag tertentu

Gabungkan fungsionalitas filter dari contoh sebelumnya dan filter tipe sumber daya Azure menurut jenis properti. Kueri ini juga membatasi pencarian kami untuk jenis sumber daya Azure tertentu dengan nama dan nilai tag tertentu.

Resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| where tags['tag with a space']=='Custom value'
az graph query -q "Resources | where type =~ 'Microsoft.Storage/storageAccounts' | where tags['tag with a space']=='Custom value'"

Catatan

Contoh ini digunakan == untuk pencocokan bukan =~ kondisional. == adalah kecocokan peka huruf besar/kecil.

Mencantumkan semua tag dan nilainya

Kueri ini mencantumkan tag pada grup manajemen, langganan, dan sumber daya bersama dengan nilainya. Kueri pertama kali membatasi sumber daya di mana tag isnotempty(), membatasi bidang yang disertakan hanya dengan menyertakan tag di project, dan mvexpand dan extend untuk mendapatkan data yang dipasangkan dari tas properti. Kemudian kueri menggunakan union untuk menggabungkan hasil dari ResourceContainers ke hasil yang sama dari Sumber Daya, memberikan cakupan luas ke tag mana yang diambil. Terakhir, membatasi hasil pada distinct data yang dipasangkan dan mengecualikan tag yang disembunyikan sistem.

ResourceContainers
| where isnotempty(tags)
| project tags
| mvexpand tags
| extend tagKey = tostring(bag_keys(tags)[0])
| extend tagValue = tostring(tags[tagKey])
| union (
    resources
    | where isnotempty(tags)
    | project tags
    | mvexpand tags
    | extend tagKey = tostring(bag_keys(tags)[0])
    | extend tagValue = tostring(tags[tagKey])
)
| distinct tagKey, tagValue
| where tagKey !startswith "hidden-"
az graph query -q "ResourceContainers | where isnotempty(tags) | project tags | mvexpand tags | extend tagKey = tostring(bag_keys(tags)[0]) | extend tagValue = tostring(tags[tagKey]) | union (resources | where notempty(tags) | project tags | mvexpand tags | extend tagKey = tostring(bag_keys(tags)[0]) | extend tagValue = tostring(tags[tagKey]) ) | distinct tagKey, tagValue | where tagKey !startswith "hidden-""

Menampilkan grup keamanan jaringan yang tidak terkait

Kueri ini menampilkan Grup Keamanan Jaringan (NSG) yang tidak terkait dengan antarmuka atau subnet jaringan.

Resources
| where type =~ "microsoft.network/networksecuritygroups" and isnull(properties.networkInterfaces) and isnull(properties.subnets)
| project name, resourceGroup
| sort by name asc
az graph query -q "Resources | where type =~ 'microsoft.network/networksecuritygroups' and isnull(properties.networkInterfaces) and isnull(properties.subnets) | project name, resourceGroup | sort by name asc"

Langkah berikutnya