Voorbeelden van startersquery's van Resource Graph

Om inzicht te krijgen in query's met Azure Resource Graph moet u eerst enige basiskennis hebben van de querytaal. Als u nog niet bekend bent met Kusto-querytaal (KQL), is het raadzaam om de KQL-zelfstudie te bekijken om inzicht te krijgen in het opstellen van aanvragen voor de resources die u zoekt.

In dit artikel worden de volgende startersquery's gebruikt:

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Taalondersteuning

Azure CLI (met een extensie) en Azure PowerShell (met een module) ondersteunen Azure Resource Graph. Controleer voordat u een van de volgende query's uitvoert, of uw omgeving gereed is. Zie Azure CLI en Azure PowerShell voor stappen voor het installeren en valideren van uw gewenste shellomgeving.

Azure-resources tellen

Deze query retourneert het aantal Azure-resources in de abonnementen waartoe u toegang hebt. Het is ook een goede query om te valideren of in uw gekozen shell de juiste Azure Resource Graph-onderdelen correct zijn geïnstalleerd.

Resources
| summarize count()

Standaard voert Azure CLI query's uit op alle toegankelijke abonnementen, maar u kunt de --subscriptions parameter opgeven om query's uit te voeren op specifieke abonnementen.

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

In dit voorbeeld wordt een variabele gebruikt voor de abonnements-id.

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

U kunt ook query's uitvoeren op de bereiken voor beheergroep en tenant. Vervang <managementGroupId> en <tenantId> door uw eigen waarden.

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

U kunt ook een variabele gebruiken voor de tenant-id.

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

Key Vault-resources tellen

Deze query gebruikt count in plaats van summarize om het aantal geretourneerde records te tellen. Alleen sleutelkluizen worden geteld.

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

Een lijst van resources weergeven, gesorteerd op naam

Deze query retourneert een willekeurig resourcetype, maar alleen de eigenschappen naam, type en locatie. De query maakt gebruik van order by om de eigenschappen in oplopende volgorde (asc) op de eigenschap naam te sorteren.

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

Alle virtuele machines weergeven, aflopend geordend op naam

Als u alleen virtuele machines wilt vermelden (die van het type Microsoft.Compute/virtualMachines zijn), kan een overeenkomst worden gezocht met de eigenschap type in de resultaten. Net als in de vorige query verandert u met desc de order by in aflopend. De =~ in de type-overeenkomst betekent in Resource Graph dat de sortering hoofdlettergevoelig is.

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"

De eerste vijf virtuele machines weergeven op naam en met hun type besturingssysteem

Deze query gebruikt top om slechts vijf overeenkomende records op te halen die op naam zijn geordend. Het type van de Azure-resource is Microsoft.Compute/virtualMachines. project geeft in Azure Resource Graph aan welke eigenschappen u wilt opnemen.

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"

Virtuele machines tellen op type besturingssysteem

Voortbouwend op de vorige query zijn we nog steeds een grens aan het stellen aan het aantal Azure-resources van het type Microsoft.Compute/virtualMachines, maar beperken we niet langer het aantal geretourneerde records. In plaats daarvan hebben we summarize en count() gebruikt om te definiëren hoe we de waarden willen groeperen en aggregeren op basis van de eigenschap. In dit voorbeeld is dat properties.storageProfile.osDisk.osType. Voor een voorbeeld van hoe deze tekenreeks er uitziet in het volledige object, raadpleegt u Resources verkennen - detectie van virtuele machines.

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)"

Een andere manier om dezelfde query te schrijven is naar extend een eigenschap en deze een tijdelijke naam geven voor gebruik in de query, in dit geval besturingssysteem. besturingssysteem wordt vervolgens gebruikt door summarize en count() zoals in het vorige voorbeeld.

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)"

Notitie

Hoewel u met =~ naar overeenkomsten kunt zoeken zonder onderscheid te maken tussen hoofd- en kleine letters, moet het hoofdlettergebruik in de query correct zijn als u eigenschappen gebruikt (zoals properties.storageProfile.osDisk.osType). Als het gebruik van hoofd-/kleine letters in de eigenschap onjuist is, wordt null of een onjuiste waarde geretourneerd en is de groepering of het overzicht niet correct.

Resources weergeven die opslag bevatten

In plaats van expliciet het type te definiëren dat moet worden vergeleken, zoekt deze voorbeeldquery een Azure-resource die contains het woordopslag bevat.

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

Alle subnetten van virtuele Azure-netwerken weergeven

Deze query retourneert een lijst met virtuele Azure-netwerken (VNets), inclusief subnetnamen en adresvoorvoegsels.

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"

Een lijst van alle openbare IP-adressen weergeven

Net als bij de vorige query vindt deze query alles dat een type is met het woord publicIPAddresses. Deze query breidt dat patroon uit om alleen resultaten op te nemen waarbij properties.ipAddressisnotempty, om alleen de properties.ipAddress te retourneren en naar limit de resultaten van de top 100. Mogelijk moet u de aanhalingstekens ontsnappen, afhankelijk van de gekozen shell.

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"

Resources tellen met IP-adressen die zijn geconfigureerd op abonnement

Door aan de vorige voorbeeldquery summarize en count() toe te voegen, krijgen we een lijst per abonnement van resources met geconfigureerde IP-adressen.

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"

Een lijst weergeven van resources met een specifieke tagwaarde

We kunnen de resultaten beperken op basis van andere eigenschappen dan het type Azure-resource, bijvoorbeeld op basis van een tag. In dit voorbeeld filteren we op Azure-resources met de tagnaam omgeving en de waarde Intern.

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

Als u ook wilt opgeven welke tags plus de bijbehorende waarden een resource heeft, voegt u de eigenschap tags aan het trefwoord project toe.

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

Een lijst weergeven van alle opslagaccounts met een specifieke tagwaarde

Combineer de filterfunctie uit het vorige voorbeeld en filter het Azure-resourcetype op de eigenschap type. Deze query beperkt ook het zoeken naar specifieke typen Azure-resources met een specifieke tagnaam- en waarde.

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'"

Notitie

In dit voorbeeld wordt == in plaats van het voorwaardelijke =~ gebruikt om naar overeenkomsten te zoeken. == is een hoofdlettergevoelige overeenkomst.

Alle tags en de bijbehorende waarden weergeven

Deze query bevat tags voor beheergroepen, abonnementen en resources, samen met hun waarden. De query beperkt eerst resources waarbij tags isnotempty(), beperkt de opgenomen velden door alleen tags op te nemen in de projecten mvexpandextend om de gekoppelde gegevens op te halen uit de eigenschappentas. Vervolgens worden union de resultaten van ResourceContainers gecombineerd tot dezelfde resultaten van Resources, waardoor brede dekking wordt gegeven aan welke tags worden opgehaald. Ten slotte worden de resultaten beperkt tot distinct gekoppelde gegevens en worden door het systeem verborgen tags uitgesloten.

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-""

Niet-gekoppelde netwerkbeveiligingsgroepen tonen

Met deze query worden netwerkbeveiligingsgroepen (NSG's) geretourneerd die niet zijn gekoppeld aan een netwerkinterface of subnet.

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"

Azure Monitor-waarschuwingen weergeven op ernst

Deze query maakt gebruik van de alertsmanagementresources tabel om Azure Monitor-waarschuwingen te retourneren die zijn gerangschikt op ernst.

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"

Azure Monitor-waarschuwingen weergeven op ernst en waarschuwingsstatus

Deze query maakt gebruik van de alertsmanagementresources tabel om Azure Monitor-waarschuwingen te retourneren op basis van ernst en waarschuwingsstatus.

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"

Azure Monitor-waarschuwingen weergeven op ernst, service bewaken en doelresourcetype

Deze query maakt gebruik van de alertsmanagementresources tabel om Azure Monitor-waarschuwingen te retourneren die zijn gerangschikt op ernst, service bewaken en doelresourcetype.

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"

Volgende stappen