Sampel kueri Resource Graph pemula

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

Artikel ini menggunakan 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()

Secara default, Azure CLI mengkueri semua langganan yang dapat diakses tetapi Anda dapat menentukan parameter untuk mengkueri --subscriptions langganan tertentu.

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

Contoh ini menggunakan variabel untuk ID langganan.

subid=$(az account show --query id --output tsv)
az graph query -q "Resources | summarize count()" --subscriptions $subid

Anda juga dapat mengkueri menurut cakupan untuk grup manajemen dan penyewa. Ganti <managementGroupId> dan <tenantId> dengan nilai Anda.

az graph query -q "Resources | summarize count()" --management-groups '<managementGroupId>'
az graph query -q "Resources | summarize count()" --management-groups '<tenantId>'

Anda juga dapat menggunakan variabel untuk ID penyewa.

tenantid=$(az account show --query tenantId --output tsv)
az graph query -q "Resources | summarize count()" --management-groups $tenantid

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"

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

Kueri ini akan menggunakantop hanya untuk mengambil lima catatan yang cocok dan 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 secara eksplisit menentukan jenis yang cocok, contoh kueri ini menemukan sumber daya Azure apa pun yang contains disimpan kata.

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

Mendaftarkan semua subnet jaringan virtual Azure

Kueri ini mengembalikan daftar jaringan virtual Azure (VNet) beserta nama subnet dan awalan alamat.

Resources
| where type == 'microsoft.network/virtualnetworks'
| extend subnets = properties.subnets
| mv-expand subnets
| project name, subnets.name, subnets.properties.addressPrefix, location, resourceGroup, subscriptionId
az graph query -q "Resources | where type == 'microsoft.network/virtualnetworks' | extend subnets = properties.subnets | mv-expand subnets | project name, subnets.name, subnets.properties.addressPrefix, location, resourceGroup, subscriptionId"

Mencantumkan semua alamat IP publik

Mirip dengan kueri sebelumnya, temukan semua yang merupakan jenis dengan kata publicIPAddresses. Kueri ini meluas pada pola tersebut untuk hanya menyertakan hasil di mana properties.ipAddressisnotempty, untuk hanya mengembalikan properties.ipAddress, dan ke limit hasil dengan 100 teratas. Anda mungkin perlu melarikan diri dari 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 beserta 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"

Mencantumkan pemberitahuan Azure Monitor yang diurutkan berdasarkan tingkat keparahan

Kueri ini menggunakan alertsmanagementresources tabel untuk mengembalikan pemberitahuan Azure Monitor yang diurutkan berdasarkan tingkat keparahan.

alertsmanagementresources
| where type =~ 'microsoft.alertsmanagement/alerts'
| where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now()
| project Severity = tostring(properties.essentials.severity)
| summarize AlertsCount = count() by Severity
az graph query -q "alertsmanagementresources | where type =~ 'microsoft.alertsmanagement/alerts' | where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now() | project Severity = tostring(properties.essentials.severity) | summarize AlertsCount = count() by Severity"

Mencantumkan pemberitahuan Azure Monitor yang diurutkan berdasarkan tingkat keparahan dan status pemberitahuan

Kueri ini menggunakan alertsmanagementresources tabel untuk mengembalikan pemberitahuan Azure Monitor yang diurutkan berdasarkan tingkat keparahan dan status pemberitahuan.

alertsmanagementresources
| where type =~ 'microsoft.alertsmanagement/alerts'
| where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now()
| project Severity = tostring(properties.essentials.severity), AlertState = tostring(properties.essentials.alertState)
| summarize AlertsCount = count() by Severity, AlertState
az graph query -q "alertsmanagementresources | where type =~ 'microsoft.alertsmanagement/alerts' | where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now() | project Severity = tostring(properties.essentials.severity), AlertState = tostring(properties.essentials.alertState) | summarize AlertsCount = count() by Severity, AlertState"

Mencantumkan pemberitahuan Azure Monitor yang diurutkan berdasarkan tingkat keparahan, layanan monitor, dan jenis sumber daya target

Kueri ini menggunakan alertsmanagementresources tabel untuk mengembalikan pemberitahuan Azure Monitor yang diurutkan berdasarkan tingkat keparahan, layanan pemantauan, dan jenis sumber daya target.

alertsmanagementresources
| where type =~ 'microsoft.alertsmanagement/alerts'
| where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now()
| project Severity = tostring(properties.essentials.severity),
MonitorCondition = tostring(properties.essentials.monitorCondition),
ObjectState = tostring(properties.essentials.alertState),
MonitorService = tostring(properties.essentials.monitorService),
AlertRuleId = tostring(properties.essentials.alertRule),
SignalType = tostring(properties.essentials.signalType),
TargetResource = tostring(properties.essentials.targetResourceName),
TargetResourceType = tostring(properties.essentials.targetResourceName), id
| summarize AlertsCount = count() by Severity, MonitorService , TargetResourceType
az graph query -q "alertsmanagementresources | where type =~ 'microsoft.alertsmanagement/alerts' | where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now() | project Severity = tostring(properties.essentials.severity), MonitorCondition = tostring(properties.essentials.monitorCondition), ObjectState = tostring(properties.essentials.alertState), MonitorService = tostring(properties.essentials.monitorService), AlertRuleId = tostring(properties.essentials.alertRule), SignalType = tostring(properties.essentials.signalType), TargetResource = tostring(properties.essentials.targetResourceName), TargetResourceType = tostring(properties.essentials.targetResourceName), id | summarize AlertsCount = count() by Severity, MonitorService , TargetResourceType"

Langkah berikutnya