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:

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.

Erőforrástípusok és API-verziók megjelenítése

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átproject é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 leftouterjoin 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 oldalijoin 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énta 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 parsevolna.

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.