Speciális 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 az Azure Data Explorert, javasoljuk, hogy tekintse át az alapokat a keresett erőforrásokra vonatkozó kérések összeállításának megértéséhez.
A következő speciális lekérdezéseken vezetjük végig:
- API-verzió megjelenítése az egyes erőforrástípusokhoz
- Virtuálisgép-méretezési csoport kapacitásának és méretének lekérése
- Oszlopok eltávolítása az eredményekből
- Összes címkenév listázása
- Reguláris kifejezésekkel egyező virtuális gépek
- Az Azure Cosmos DB listázása adott írási helyekkel
- Az előfizetés nevével rendelkező kulcstartók
- SQL-adatbázisok és rugalmas készleteik listázása
- Virtuális gépek listázása a hálózati adapterükkel és a nyilvános IP-címükkel
- A virtuális gépen telepített összes bővítmény listázása
- Tárfiókok keresése egy adott címkével az erőforráscsoporton
- Két lekérdezés eredményeinek egyesítése egyetlen eredményben
- Virtuális hálózatok és hálózati adapterek alhálózatainak lekérése
- Virtuális gép összegzése a kiterjesztett energiaállapot-tulajdonság alapján
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.
API-verzió megjelenítése az egyes erőforrástípusokhoz
A Resource Graph elsősorban az erőforrás-szolgáltatói API legújabb nem előzetes verzióját használja az erőforrás-tulajdonságokra GET
a frissítés során. Bizonyos esetekben a használt API-verzió felül lett bírálva, hogy aktuálisabb vagy széles körben használt tulajdonságokat biztosítson az eredményekben. Az alábbi lekérdezés az egyes erőforrástípusok tulajdonságainak gyűjtéséhez használt API-verziót ismerteti:
Resources
| distinct type, apiVersion
| where isnotnull(apiVersion)
| order by type asc
az graph query -q "Resources | distinct type, apiVersion | where isnotnull(apiVersion) | order by type asc"
Virtuálisgép-méretezési csoport kapacitásának és méretének lekérése
Ez a lekérdezés a virtuálisgép-méretezési csoportok erőforrásait keresi meg, és különböző adatokat kér le, többet között a méretezési csoport virtuálisgép-méretét és kapacitását. Ez a lekérdezés a toint()
függvénnyel képezi le a kapacitást egy számmá, amely így rendezhető lesz. Végül a rendszer egyéni elnevezett tulajdonságokká nevezi át az oszlopokat.
Resources
| where type=~ 'microsoft.compute/virtualmachinescalesets'
| where name contains 'contoso'
| project subscriptionId, name, location, resourceGroup, Capacity = toint(sku.capacity), Tier = sku.name
| order by Capacity desc
az graph query -q "Resources | where type=~ 'microsoft.compute/virtualmachinescalesets' | where name contains 'contoso' | project subscriptionId, name, location, resourceGroup, Capacity = toint(sku.capacity), Tier = sku.name | order by Capacity desc"
Oszlopok eltávolítása az eredményekből
Az alábbi lekérdezés az erőforrások előfizetés szerinti megszámlálására, a ResourceContainers tábla előfizetési adataival való kombinálására, majd project-away
néhány oszlop eltávolítására használhatósummarize
. join
Resources
| summarize resourceCount=count() by subscriptionId
| join (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId
| project-away subscriptionId, subscriptionId1
az graph query -q "Resources | summarize resourceCount=count() by subscriptionId | join (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId| project-away subscriptionId, subscriptionId1"
Összes címkenév listázása
Ez a lekérdezés a címkével kezdi, majd felépít egy JSON-objektumot, amely listázza az összes egyedi címkét és annak típusát.
Resources
| project tags
| summarize buildschema(tags)
az graph query -q "Resources | project tags | summarize buildschema(tags)"
Reguláris kifejezésekkel egyező virtuális gépek
Ez a lekérdezés olyan virtuális gépeket keres, amelyek egyeznek egy reguláris kifejezéssel (más néven regex-szel). Az egyezések regex @ lehetővé teszik számunkra, hogy meghatározza a regex egyezni, ami ^Contoso(.*)[0-9]+$
.
A reguláris kifejezés definíciójának magyarázata:
^
– Az egyezésnek a sztring elején kell kezdődnie.Contoso
– A kis- és nagybetűket megkülönböztető sztring.(.*)
- Egy szubexpressziós egyezés:.
– Egyezik bármely egyetlen karakterrel (az új sor kivételével).*
– Az előző elemmel nullaszor vagy többször egyezik.
[0-9]
– Karaktercsoport-egyezés a 0 és 9 közötti számokhoz.+
– Az előző elemmel egyszer vagy többször egyezik.$
– Az előző elemmel történő egyezésnek a sztring végén kell lennie.
A név alapján történő egyezéseket követően a lekérdezés levetíti és ábécé sorrendbe rendezi a neveket.
Resources
| where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$'
| project name
| order by name asc
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+\$' | project name | order by name asc"
Az Azure Cosmos DB listázása adott írási helyekkel
Az alábbi lekérdezési korlátok az Azure Cosmos DB-erőforrásokra vonatkoznak, mv-expand
a properties.writeLocations tulajdonságcsomag kibontásával, majd adott mezők kivetítéséhez és az eredmények további korlátozásához a properties.writeLocations.locationName értékekre, amelyek megfelelnek az "USA keleti régiója" vagy az "USA nyugati régiója" értéknek.
Resources
| where type =~ 'microsoft.documentdb/databaseaccounts'
| project id, name, writeLocations = (properties.writeLocations)
| mv-expand writeLocations
| project id, name, writeLocation = tostring(writeLocations.locationName)
| where writeLocation in ('East US', 'West US')
| summarize by id, name
az graph query -q "Resources | where type =~ 'microsoft.documentdb/databaseaccounts' | project id, name, writeLocations = (properties.writeLocations) | mv-expand writeLocations | project id, name, writeLocation = tostring(writeLocations.locationName) | where writeLocation in ('East US', 'West US') | summarize by id, name"
Az előfizetés nevével rendelkező kulcstartók
Az alábbi lekérdezés a természetbeni join
használatot mutatja be bal oldaliként. A lekérdezés az előfizetési erőforrásokra korlátozza az összekapcsolt táblát, és csak az eredeti mező subscriptionId azonosítóját project
és az alnévre átnevezett névmezőt tartalmazza. A mező átnevezése elkerüli join
a név1 nevet, mivel a mező már létezik az erőforrásokban. Az eredeti táblázat szűrve where
van, és az alábbiak project
mindkét tábla oszlopait tartalmazzák. A lekérdezés eredménye az összes olyan kulcstartó, amely megjeleníti a típust, a kulcstartó nevét és a benne lévő előfizetés nevét.
Resources
| join kind=leftouter (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId
| where type == 'microsoft.keyvault/vaults'
| project type, name, SubName
az graph query -q "Resources | join kind=leftouter (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId | where type == 'microsoft.keyvault/vaults' | project type, name, SubName"
SQL-adatbázisok és rugalmas készleteik listázása
Az alábbi lekérdezés a leftouter join
használatával egyesíti az SQL Database-erőforrásokat és a kapcsolódó rugalmas készleteiket, ha vannak ilyenek.
Resources
| where type =~ 'microsoft.sql/servers/databases'
| project databaseId = id, databaseName = name, elasticPoolId = tolower(tostring(properties.elasticPoolId))
| join kind=leftouter (
Resources
| where type =~ 'microsoft.sql/servers/elasticpools'
| project elasticPoolId = tolower(id), elasticPoolName = name, elasticPoolState = properties.state)
on elasticPoolId
| project-away elasticPoolId1
az graph query -q "Resources | where type =~ 'microsoft.sql/servers/databases' | project databaseId = id, databaseName = name, elasticPoolId = tolower(tostring(properties.elasticPoolId)) | join kind=leftouter ( Resources | where type =~ 'microsoft.sql/servers/elasticpools' | project elasticPoolId = tolower(id), elasticPoolName = name, elasticPoolState = properties.state) on elasticPoolId | project-away elasticPoolId1"
Virtuális gépek listázása a hálózati adapterükkel és a nyilvános IP-címükkel
Ez a lekérdezés két bal oldali join
parancsot használ a Resource Manager-alapú üzemi modellel létrehozott virtuális gépek, a hozzájuk kapcsolódó hálózati adapterek és az ezekhez a hálózati adapterekhez kapcsolódó nyilvános IP-címek összevonásához.
Resources
| where type =~ 'microsoft.compute/virtualmachines'
| extend nics=array_length(properties.networkProfile.networkInterfaces)
| mv-expand nic=properties.networkProfile.networkInterfaces
| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic)
| project vmId = id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), nicId = tostring(nic.id)
| join kind=leftouter (
Resources
| where type =~ 'microsoft.network/networkinterfaces'
| extend ipConfigsCount=array_length(properties.ipConfigurations)
| mv-expand ipconfig=properties.ipConfigurations
| where ipConfigsCount == 1 or ipconfig.properties.primary =~ 'true'
| project nicId = id, publicIpId = tostring(ipconfig.properties.publicIPAddress.id))
on nicId
| project-away nicId1
| summarize by vmId, vmName, vmSize, nicId, publicIpId
| join kind=leftouter (
Resources
| where type =~ 'microsoft.network/publicipaddresses'
| project publicIpId = id, publicIpAddress = properties.ipAddress)
on publicIpId
| project-away publicIpId1
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' | extend nics=array_length(properties.networkProfile.networkInterfaces) | mv-expand nic=properties.networkProfile.networkInterfaces | where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic) | project vmId = id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), nicId = tostring(nic.id) | join kind=leftouter ( Resources | where type =~ 'microsoft.network/networkinterfaces' | extend ipConfigsCount=array_length(properties.ipConfigurations) | mv-expand ipconfig=properties.ipConfigurations | where ipConfigsCount == 1 or ipconfig.properties.primary =~ 'true' | project nicId = id, publicIpId = tostring(ipconfig.properties.publicIPAddress.id)) on nicId | project-away nicId1 | summarize by vmId, vmName, vmSize, nicId, publicIpId | join kind=leftouter ( Resources | where type =~ 'microsoft.network/publicipaddresses' | project publicIpId = id, publicIpAddress = properties.ipAddress) on publicIpId | project-away publicIpId1"
A virtuális gépen telepített összes bővítmény listázása
Ez a lekérdezés először a virtuális gépek erőforrástípusán használja extend
az azonosító nagybetűs (toupper()
) beolvasására, az operációs rendszer nevének és típusának lekérésére, valamint a virtuális gép méretének lekérésére.
Az erőforrás-azonosító nagybetűs lekérése jó módszer arra, hogy felkészüljön egy másik tulajdonsághoz való csatlakozásra. Ezt követően a lekérdezés a típust használja bal oldaliként a virtuálisgép-bővítmények lekéréséhez a bővítményazonosító nagybetűs substring
egyezésével.join
Az azonosító "/extensions/<ExtensionName>" előtti része ugyanaz a formátum, mint a virtuális gépek azonosítója, ezért ezt a tulajdonságot használjuk a join
. summarize
ezután a virtuálisgép-bővítmény nevére lesz használva make_list
az egyes bővítmények nevének egyesítéséhez, ahol az azonosító, az OSName, az OSType és a VMSize azonos egyetlen tömbtulajdonságban. Végül a order by
kisbetűs OSName és az asc. Alapértelmezés szerint order by
csökkenő.
Resources
| where type == 'microsoft.compute/virtualmachines'
| extend
JoinID = toupper(id),
OSName = tostring(properties.osProfile.computerName),
OSType = tostring(properties.storageProfile.osDisk.osType),
VMSize = tostring(properties.hardwareProfile.vmSize)
| join kind=leftouter(
Resources
| where type == 'microsoft.compute/virtualmachines/extensions'
| extend
VMId = toupper(substring(id, 0, indexof(id, '/extensions'))),
ExtensionName = name
) on $left.JoinID == $right.VMId
| summarize Extensions = make_list(ExtensionName) by id, OSName, OSType, VMSize
| order by tolower(OSName) asc
az graph query -q "Resources | where type == 'microsoft.compute/virtualmachines' | extend JoinID = toupper(id), OSName = tostring(properties.osProfile.computerName), OSType = tostring(properties.storageProfile.osDisk.osType), VMSize = tostring(properties.hardwareProfile.vmSize) | join kind=leftouter( Resources | where type == 'microsoft.compute/virtualmachines/extensions' | extend VMId = toupper(substring(id, 0, indexof(id, '/extensions'))), ExtensionName = name ) on \$left.JoinID == \$right.VMId | summarize Extensions = make_list(ExtensionName) by id, OSName, OSType, VMSize | order by tolower(OSName) asc"
Tárfiókok keresése egy adott címkével az erőforráscsoporton
Az alábbi lekérdezés egy belső join
használatával csatlakoztatja a tárfiókokat egy megadott kis- és nagybetűkre érzékeny címkenévvel és címkeértékkel rendelkező erőforráscsoportokkal.
Resources
| where type =~ 'microsoft.storage/storageaccounts'
| join kind=inner (
ResourceContainers
| where type =~ 'microsoft.resources/subscriptions/resourcegroups'
| where tags['Key1'] =~ 'Value1'
| project subscriptionId, resourceGroup)
on subscriptionId, resourceGroup
| project-away subscriptionId1, resourceGroup1
az graph query -q "Resources | where type =~ 'microsoft.storage/storageaccounts' | join kind=inner ( ResourceContainers | where type =~ 'microsoft.resources/subscriptions/resourcegroups' | where tags['Key1'] =~ 'Value1' | project subscriptionId, resourceGroup) on subscriptionId, resourceGroup | project-away subscriptionId1, resourceGroup1"
Ha nem érzéketlen címkenevet és címkeértéket kell keresnie, használja mv-expand
a bagexpansion paramétert. Ez a lekérdezés több kvótát használ, mint az előző lekérdezés, ezért csak akkor használja mv-expand
, ha szükséges.
Resources
| where type =~ 'microsoft.storage/storageaccounts'
| join kind=inner (
ResourceContainers
| where type =~ 'microsoft.resources/subscriptions/resourcegroups'
| mv-expand bagexpansion=array tags
| where isnotempty(tags)
| where tags[0] =~ 'key1' and tags[1] =~ 'value1'
| project subscriptionId, resourceGroup)
on subscriptionId, resourceGroup
| project-away subscriptionId1, resourceGroup1
az graph query -q "Resources | where type =~ 'microsoft.storage/storageaccounts' | join kind=inner ( ResourceContainers | where type =~ 'microsoft.resources/subscriptions/resourcegroups' | mv-expand bagexpansion=array tags | where isnotempty(tags) | where tags[0] =~ 'key1' and tags[1] =~ 'value1' | project subscriptionId, resourceGroup) on subscriptionId, resourceGroup | project-away subscriptionId1, resourceGroup1"
Két lekérdezés eredményeinek egyesítése egyetlen eredményben
Az alábbi lekérdezés a ResourceContainers táblából származó eredmények lekérésére és az Erőforrások táblából származó eredmények hozzáadására használjaunion
.
ResourceContainers
| where type=='microsoft.resources/subscriptions/resourcegroups' | project name, type | limit 5
| union (Resources | project name, type | limit 5)
az graph query -q "ResourceContainers | where type=='microsoft.resources/subscriptions/resourcegroups' | project name, type | limit 5 | union (Resources | project name, type | limit 5)"
Virtuális hálózatok és hálózati adapterek alhálózatainak lekérése
Használjon reguláris kifejezést parse
a virtuális hálózat és az alhálózat nevének lekéréséhez az erőforrás-azonosító tulajdonságból. Bár parse
lehetővé teszi az adatok összetett mezőből való lekérését, optimális, ha a tulajdonságokat közvetlenül, ahelyett, hogy használták parse
volna.
Resources
| where type =~ 'microsoft.network/networkinterfaces'
| project id, ipConfigurations = properties.ipConfigurations
| mvexpand ipConfigurations
| project id, subnetId = tostring(ipConfigurations.properties.subnet.id)
| parse kind=regex subnetId with '/virtualNetworks/' virtualNetwork '/subnets/' subnet
| project id, virtualNetwork, subnet
az graph query -q "Resources | where type =~ 'microsoft.network/networkinterfaces' | project id, ipConfigurations = properties.ipConfigurations | mvexpand ipConfigurations | project id, subnetId = tostring(ipConfigurations.properties.subnet.id) | parse kind=regex subnetId with '/virtualNetworks/' virtualNetwork '/subnets/' subnet | project id, virtualNetwork, subnet"
Virtuális gép összegzése a kiterjesztett energiaállapot-tulajdonság alapján
Ez a lekérdezés a virtuális gépek kiterjesztett tulajdonságait használja az energiaállapotok szerinti összegzéshez.
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
az graph query -q "Resources | where type == 'microsoft.compute/virtualmachines' | summarize count() by tostring(properties.extended.instanceView.powerState.code)"
Következő lépések
- Tekintse meg a Starter-lekérdezések mintáit.
- További információ a lekérdezés nyelvéről.
- További információ az erőforrások felfedezéséről.