Starter Resource Graph-lekérdezésminták
Az Azure Resource Graph-fal végzett lekérdezések megértéséhez először a lekérdezés nyelvét kell alapszinten megismernie. Ha még nem ismeri a Kusto lekérdezésnyelv (KQL) használatát, javasoljuk, hogy tekintse át a KQL-oktatóanyagot, amelyből megtudhatja, hogyan írhat kéréseket a keresett erőforrásokra vonatkozóan.
Ez a cikk a következő kezdő lekérdezéseket használja:
- Az Azure-erőforrások száma
- Key Vault-erőforrások számlálása
- Az erőforrások listája név szerint rendezve
- Az összes virtuális gép megjelenítése név szerint rendezve, csökkenő sorrendben
- Az első öt virtuális gép megjelenítése a nevük és az operációs rendszerük típusa szerint
- A virtuális gépek száma az operációs rendszer típusa szerint
- A tárolót tartalmazó erőforrások megjelenítése
- Az összes Azure-beli virtuális hálózati alhálózat listázása
- Az összes nyilvános IP-cím listázása
- A konfigurált IP-címekkel rendelkező erőforrások száma előfizetés szerint
- Az adott címkeértékkel rendelkező erőforrások listázása
- Az összes, adott címkeértékkel rendelkező tárfiók listázása
- Az összes címke és érték listázása
- Társítatlan hálózati biztonsági csoportok megjelenítése
- Súlyosság szerint rendezett Azure Monitor-riasztások listázása
- Súlyosság és riasztási állapot szerint rendezett Azure Monitor-riasztások listázása
- Súlyosság, monitorozási szolgáltatás és célerőforrás-típus szerint rendezett Azure Monitor-riasztások listázása
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Nyelvi támogatás
Az Azure Resource Graph-ot az Azure CLI (bővítményen keresztül) és az Azure PowerShell (modulon keresztül) támogatja. Mielőtt a következő lekérdezések bármelyikét végrehajtaná, ellenőrizze, hogy a környezet készen áll-e. A kiválasztott parancshéj környezet telepítéséhez és ellenőrzéséhez lásd: Azure CLI és Azure PowerShell.
Az Azure-erőforrások száma
Ez a lekérdezés az Ön által elérhető előfizetésekben lévő Azure-erőforrások számát adja vissza. Ez a lekérdezés emellett annak ellenőrzésére is jól használható, hogy a kiválasztott parancshéj rendelkezik-e a megfelelő, telepített és működőképes Azure Resource Graph-összetevőkkel.
Resources
| summarize count()
Alapértelmezés szerint az Azure CLI lekérdezi az összes elérhető előfizetést, de megadhatja az --subscriptions
adott előfizetések lekérdezésére szolgáló paramétert.
az graph query -q "Resources | summarize count()"
Ez a példa egy változót használ az előfizetés-azonosítóhoz.
subid=$(az account show --query id --output tsv)
az graph query -q "Resources | summarize count()" --subscriptions $subid
A felügyeleti csoport és a bérlő hatókörei alapján is lekérdezhető. Cserélje le és <tenantId>
cserélje le <managementGroupId>
az értékeket.
az graph query -q "Resources | summarize count()" --management-groups '<managementGroupId>'
az graph query -q "Resources | summarize count()" --management-groups '<tenantId>'
A bérlőazonosítóhoz változót is használhat.
tenantid=$(az account show --query tenantId --output tsv)
az graph query -q "Resources | summarize count()" --management-groups $tenantid
Key Vault-erőforrások számlálása
Ez a lekérdezés a visszaadott rekordok számának megszámlálása helyett summarize
használjacount
. Csak a kulcstartók szerepelnek a darabszámban.
Resources
| where type =~ 'microsoft.keyvault/vaults'
| count
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | count"
Az erőforrások listája név szerint rendezve
Ez a lekérdezés bármilyen típusú erőforrást vissza tud adni, de csak a név, típus és hely tulajdonságokkal. Az order by
paranccsal rendezi a tulajdonságokat a név tulajdonság alapján növekvő (asc
) sorrendben.
Resources
| project name, type, location
| order by name asc
az graph query -q "Resources | project name, type, location | order by name asc"
Az összes virtuális gép megjelenítése név szerint rendezve, csökkenő sorrendben
Ha csak a (Microsoft.Compute/virtualMachines
típusú) virtuális gépeket kívánja listázni, megfeleltetheti a típus tulajdonságot az eredmények között. Az előző lekérdezéshez hasonlóan a desc
paraméter az order by
paramétert csökkenő sorrendre módosítja. A típusegyezésben megadott =~
esetén a Resource Graph megkülönbözteti a kis- és a nagybetűt.
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"
Az első öt virtuális gép megjelenítése a nevük és az operációs rendszerük típusa szerint
Ez a lekérdezés csak öt név szerint rendezett egyező rekord lekérésére használ top
. Az Azure-erőforrás típusa Microsoft.Compute/virtualMachines
. A project
adja meg az Azure Resource Graph-nak, hogy a lekérdezés mely tulajdonságokat tartalmazza.
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"
A virtuális gépek száma az operációs rendszer típusa szerint
Az előző lekérdezésre épülve a listánk továbbra is a Microsoft.Compute/virtualMachines
típusú Azure-erőforrásokra korlátozódik, viszont a visszaadott rekordok száma szerint már nincs szűrve.
Ehelyett a summarize
és a count()
paramétert használtuk annak meghatározásához, hogyan csoportosítsa és összesítse az értékeket tulajdonság alapján, amely ebben a példában a properties.storageProfile.osDisk.osType
. Az alábbi helyen talál példát arra, hogy hogyan néz ki ez a sztring a teljes objektumban: erőforrások felfedezése – virtuális gépek felderítése.
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)"
Ugyanazt a lekérdezést másképpen is megírhatja, ha extend
egy tulajdonságot használ, és ideiglenes nevet ad neki a lekérdezésen belül, ebben az esetben az operációs rendszerben. az operációs rendszert ezután az előző példához hasonlóan használja summarize
count()
.
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)"
Feljegyzés
Vegye figyelembe, hogy míg az =~
paraméter lehetővé teszi a kis- és nagybetűk megkülönböztetése nélküli lekérdezést, ha tulajdonságokat (például properties.storageProfile.osDisk.osType) használ a lekérdezésben, a kis- és nagybetűt helyesen kell megadni. Ha a tulajdonság helytelen eset, a rendszer null vagy helytelen értéket ad vissza, és a csoportosítás vagy az összegzés helytelen lenne.
A storage szót tartalmazó erőforrások megjelenítése
Ahelyett, hogy contains
explicit módon definiálja az egyező típust, ez a példa lekérdezés megkeresi a storage szóhoz tartozó Azure-erőforrást.
Resources
| where type contains 'storage' | distinct type
az graph query -q "Resources | where type contains 'storage' | distinct type"
Az összes Azure-beli virtuális hálózati alhálózat listázása
Ez a lekérdezés az Azure-beli virtuális hálózatok (VNetek) listáját adja vissza, beleértve az alhálózatneveket és a címelőtagokat. Köszönöm Saul Dolginnak a közreműködést.
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"
Az összes nyilvános IP-cím listázása
Az előző lekérdezéshez hasonlóan minden olyan elemet megtalál, amelynek a típusa tartalmazza a publicIPAddresses sztringet.
Ez a lekérdezés kibővül ezen a mintán, hogy csak azokat az eredményeket tartalmazza, ahol a properties.ipAddressisnotempty
, hogy csak a properties.ipAddress értéket adja vissza, és limit
az első 100 találatot adja vissza. Előfordulhat, hogy a választott rendszerhéjtól függően el kell menekülnie az idézőjelek elől.
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"
A konfigurált IP-címekkel rendelkező erőforrások száma előfizetés szerint csoportosítva
Ha maradunk az előző lekérdezéspéldánál, és hozzáadjuk a summarize
és a count()
paramétert, megkaphatjuk a konfigurált IP-címekkel rendelkező erőforrások előfizetés szerinti listáját.
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"
Az adott címkeértékkel rendelkező erőforrások listázása
Az eredményeket az Azure-erőforrás típusán kívül más tulajdonságok, pl. a címke alapján is korlátozhatjuk. Ebben a példában azokra az Environment címkenévvel rendelkező Azure-erőforrásokra szűrünk, amelyek értéke Internal.
Resources
| where tags.environment=~'internal'
| project name
az graph query -q "Resources | where tags.environment=~'internal' | project name"
Az erőforrás címkéinek és a hozzájuk tartozó értékek megadásához adja hozzá a tags tulajdonságot a project
kulcsszóhoz.
Resources
| where tags.environment=~'internal'
| project name, tags
az graph query -q "Resources | where tags.environment=~'internal' | project name, tags"
Az adott címkeértékkel rendelkező összes tárfiók listázása
Kombinálhatja az előző példa szűrőfunkcióját, és type tulajdonság alapján szűrheti az Azure-erőforrásokat. Ez a lekérdezés az Azure-erőforrások adott típusainak keresését is adott címkenévre és -értékre korlátozza.
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'"
Feljegyzés
Ez példa az egyező találatok kereséséhez az ==
paramétert használja az =~
feltételes helyett. Az ==
kis- és nagybetűket megkülönböztető találatot ad.
Az összes címke és érték listázása
Ez a lekérdezés a felügyeleti csoportok, előfizetések és erőforrások címkéit és értékeit sorolja fel.
A lekérdezés először korlátozza a címkéket isnotempty()
tartalmazó erőforrásokat, korlátozza a belefoglalt mezőket úgy, hogy csak a címkéket tartalmazza, project
és mvexpand
extend
lekéri a párosított adatokat a tulajdonságcsomagból. Ezt követően a ResourceContainers eredményeit az erőforrásokból származó eredményekre egyesítiunion
, így széles körű lefedettséget biztosít, hogy mely címkék legyenek lekérve. Végül a párosított adatokra distinct
korlátozza az eredményeket, és kizárja a rendszer által rejtett címkéket.
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-""
Társítatlan hálózati biztonsági csoportok megjelenítése
Ez a lekérdezés olyan hálózati biztonsági csoportokat (NSG-ket) ad vissza, amelyek nincsenek hálózati adapterhez vagy alhálózathoz társítva.
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"
Súlyosság szerint rendezett Azure Monitor-riasztások listázása
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
Súlyosság és riasztási állapot szerint rendezett Azure Monitor-riasztások listázása
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
Súlyosság, monitorozási szolgáltatás és célerőforrás-típus szerint rendezett Azure Monitor-riasztások listázása
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
Következő lépések
- További információ a lekérdezés nyelvéről.
- További információ az erőforrások felfedezéséről.
- Tekintse meg a Speciális lekérdezések mintáit.