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:
- Azure-resources tellen
- Key Vault-resources tellen
- Een lijst van resources weergeven, gesorteerd op naam
- Alle virtuele machines weergeven, aflopend geordend op naam
- De eerste vijf virtuele machines weergeven op naam en met hun type besturingssysteem
- Virtuele machines tellen op type besturingssysteem
- Resources weergeven die opslag bevatten
- Alle subnetten van virtuele Azure-netwerken weergeven
- Een lijst van alle openbare IP-adressen weergeven
- Resources tellen met IP-adressen die zijn geconfigureerd op abonnement
- Een lijst weergeven van resources met een specifieke tagwaarde
- Een lijst weergeven van alle opslagaccounts met een specifieke tagwaarde
- Alle tags en de bijbehorende waarden weergeven
- Niet-gekoppelde netwerkbeveiligingsgroepen tonen
- Azure Monitor-waarschuwingen weergeven op ernst
- Azure Monitor-waarschuwingen weergeven op ernst en waarschuwingsstatus
- Azure Monitor-waarschuwingen weergeven op ernst, service bewaken en doelresourcetype
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. Dank aan Saul Dolgin voor de bijdrage.
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 project
en mvexpand
extend
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
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
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
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
- Meer informatie over de querytaal.
- Lees meer over het verkennen van resources.
- Bekijk voorbeelden van Geavanceerde query's.