Pour comprendre comment fonctionnent les requêtes dans Azure Resource Graph, vous devez au préalable vous familiariser avec le langage de requête. Si vous ne connaissez pas bien le langage de requête Kusto (KQL), nous vous recommandons de consulter le tutoriel KQL pour comprendre comment composer des requêtes pour les ressources qui vous intéressent.
Cet article utilise les requêtes de démarrage suivantes :
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Support multilingue
Azure CLI (par le biais d’une extension) et Azure PowerShell (par le biais d’un module) prennent en charge Azure Resource Graph. Avant d’exécuter les requêtes suivantes, vérifiez que votre environnement est prêt. Consultez Azure CLI et Azure PowerShell pour savoir comment installer et valider l’environnement de votre interpréteur de commandes.
Compter les ressources Azure
Cette requête retourne le nombre de ressources Azure présentes dans les abonnements auxquels vous avez accès. Elle permet également de valider que votre interpréteur de commandes dispose des composants Azure Resource Graph appropriés et en état de fonctionnement.
Par défaut, Azure CLI interroge tous les abonnements accessibles, mais vous pouvez spécifier le paramètre --subscriptions pour interroger des abonnements spécifiques.
Azure CLI
az graph query -q"Resources | summarize count()"
Cet exemple utilise une variable pour l’ID d’abonnement.
Azure CLI
subid=$(az account show --query id --output tsv)
az graph query -q"Resources | summarize count()"--subscriptions$subid
Vous pouvez également effectuer une requête selon les étendues du groupe d’administration et du tenant (locataire). Remplacez <managementGroupId> et <tenantId> par vos valeurs.
Azure CLI
az graph query -q"Resources | summarize count()"--management-groups'<managementGroupId>'
Azure CLI
az graph query -q"Resources | summarize count()"--management-groups'<tenantId>'
Vous pouvez également utiliser une variable pour l’ID du locataire.
Azure CLI
tenantid=$(az account show --query tenantId --output tsv)
az graph query -q"Resources | summarize count()"--management-groups$tenantid
Par défaut, Azure PowerShell obtient des résultats pour tous les abonnements de votre locataire.
Vous pouvez effectuer une requête selon les étendues du groupe d’administration et du locataire. Remplacez <managementGroupId> par votre valeur. Le paramètre UseTenantScope ne nécessite pas de valeur.
Microsoft Azure géré par le portail 21Vianet : portal.azure.cn
Compter les ressources Key Vault
Cette requête utilise count au lieu de summarize pour compter le nombre d’enregistrements retournés. Seuls les coffres de clés sont inclus dans le décompte.
Kusto
Resources
| where type =~ 'microsoft.keyvault/vaults'
| count
Cette requête renvoie n’importe quel type de ressource, mais uniquement les propriétés de nom, de type, et d’emplacement. Elle utilise order by pour trier les propriétés par nom dans l’ordre croissant (asc).
Kusto
Resources
| project name, type, location
| orderby name asc
Afficher toutes les machines virtuelles classées par nom dans l’ordre décroissant
Pour répertorier uniquement les machines virtuelles (qui sont de type Microsoft.Compute/virtualMachines), vous pouvez utiliser la propriété type dans les résultats. Comme dans la requête précédente, order by indique l’ordre de tri (desc spécifie un ordre décroissant). Lors de la mise en correspondance du type, =~ indique à Resource Graph de ne pas respecter la casse.
Kusto
Resources
| project name, location, type
| where type =~ 'Microsoft.Compute/virtualMachines'
| orderby name desc
Afficher les cinq premières machines virtuelles par nom et le type de leur système d’exploitation
Cette requête utilise top pour récupérer uniquement cinq enregistrements correspondants classés par nom. Le type de ressource Azure est Microsoft.Compute/virtualMachines. project indique à Azure Resource Graph les propriétés à inclure.
Kusto
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project name, properties.storageProfile.osDisk.osType
| top5by name desc
az graph query -q"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project name, properties.storageProfile.osDisk.osType | top 5 by name desc"
Azure PowerShell
Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project name, properties.storageProfile.osDisk.osType | top 5 by name desc"
Essayez cette requête dans l’Explorateur Azure Resource Graph :
Compter les machines virtuelles par type de système d’exploitation
Partons de la requête précédente. Nous limitons toujours les ressources Azure à celles de type Microsoft.Compute/virtualMachines, mais nous ne limitons plus le nombre d’enregistrements retournés.
Au lieu de cela, nous utilisons summarize et count() pour définir comment regrouper et agréger les valeurs par propriété (properties.storageProfile.osDisk.osType dans cet exemple). Pour voir à quoi ressemble cette chaîne dans l’objet complet, consultez Explorer les ressources - Découverte de machines virtuelles.
Kusto
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| summarizecount() bytostring(properties.storageProfile.osDisk.osType)
az graph query -q"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"
Azure PowerShell
Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"
Essayez cette requête dans l’Explorateur Azure Resource Graph :
Une autre façon d’écrire la même requête est de extend une propriété et de lui donner un nom temporaire pour une utilisation au sein de la requête (os dans ce cas). os est ensuite utilisé par summarize et count(), comme dans l’exemple précédent.
Kusto
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| extend os = properties.storageProfile.osDisk.osType
| summarizecount() bytostring(os)
az graph query -q"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | extend os = properties.storageProfile.osDisk.osType | summarize count() by tostring(os)"
Azure PowerShell
Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | extend os = properties.storageProfile.osDisk.osType | summarize count() by tostring(os)"
Essayez cette requête dans l’Explorateur Azure Resource Graph :
Même si =~ autorise la mise en correspondance sans respect de la casse, sachez que l’utilisation de propriétés comme properties.storageProfile.osDisk.osType dans la requête nécessite le respect de la casse. Si la casse de la propriété est incorrecte, une valeur null ou incorrecte est retournée et la totalisation ou le regroupement est erroné.
Afficher les ressources contenant du stockage
Au lieu de définir explicitement le type auquel correspondre, cet exemple de requête recherche toute ressource Azure portant contains le mot stockage.
Kusto
Resources
| where type contains'storage' | distinct type
Répertorier tous les sous-réseaux de réseau virtuel Azure
Cette requête retourne une liste de réseaux virtuels (VNets) Azure, incluant les noms et les préfixes d’adresses de sous-réseau. Merci à Saul Dolgin pour sa contribution.
Comme dans la requête précédente, nous recherchons toutes les ressources dont le type contient un mot (ici, publicIPAddresses).
Cette requête se développe sur ce modèle pour inclure uniquement les résultats où properties.ipAddressisnotempty, en retournant uniquement properties.ipAddress, et en limit les résultats aux 100 premiers. Vous devrez peut-être placer les guillemets dans une séquence d’échappement en fonction de votre interpréteur de commandes.
Kusto
Resources
| where type contains'publicIPAddresses'andisnotempty(properties.ipAddress)
| project properties.ipAddress
| limit100
az graph query -q"Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | project properties.ipAddress | limit 100"
Azure PowerShell
Search-AzGraph -Query"Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | project properties.ipAddress | limit 100"
Essayez cette requête dans l’Explorateur Azure Resource Graph :
Compter les ressources avec des adresses IP configurées pour chaque abonnement
Reprenons l’exemple de requête précédent et ajoutons summarize et count() pour obtenir une liste par abonnement des ressources avec des adresses IP configurées.
Kusto
Resources
| where type contains'publicIPAddresses'andisnotempty(properties.ipAddress)
| summarizecount () by subscriptionId
Lister les ressources avec une valeur d’étiquette spécifique
Nous pouvons limiter les résultats en fonction d’autres propriétés que le type de ressource Azure, notamment une étiquette. Dans cet exemple, nous filtrons les ressources Azure ayant une étiquette nommée environment avec pour valeur internal.
Kusto
Resources
| where tags.environment=~'internal'
| project name
Lister tous les comptes de stockage avec une valeur d’étiquette spécifique
Combinez la fonctionnalité de filtre de l’exemple précédent, et filtrez le type de ressource Azure en utilisant la propriété type. Cette requête limite également notre recherche à certains types de ressources Azure, qui disposent d’un nom d’étiquette et d’une valeur spécifiques.
Kusto
Resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| wheretags['tag with a space']=='Custom value'
Cet exemple utilise une condition == pour la mise en correspondance au lieu de =~. == indique que la mise en correspondance respecte la casse.
Lister toutes les étiquettes et leurs valeurs
Cette requête liste les étiquettes sur les groupes d’administration, les abonnements et les ressources ainsi que leurs valeurs.
La requête limite d’abord les résultats aux ressources où les étiquettes sont non vides (isnotempty()), puis limite les champs inclus en incluant uniquement tags dans project, mvexpand et extend pour obtenir les données associées à partir du jeu de propriétés. Elle utilise ensuite union pour combiner les résultats de ResourceContainers aux mêmes résultats de Resources, couvrant largement les étiquettes effectivement extraites. Enfin, elle limite les résultats aux données associées distinct et exclut les étiquettes cachées par le système.
Afficher les groupes de sécurité réseau qui ne sont pas associés
Cette requête retourne les groupes de sécurité réseau (NSG) qui ne sont pas associés à une interface réseau ou à un sous-réseau.
Kusto
Resources
| where type =~ "microsoft.network/networksecuritygroups"andisnull(properties.networkInterfaces) andisnull(properties.subnets)
| project name, resourceGroup
| sortby 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 PowerShell
Search-AzGraph -Query"Resources | where type =~ 'microsoft.network/networksecuritygroups' and isnull(properties.networkInterfaces) and isnull(properties.subnets) | project name, resourceGroup | sort by name asc"
Essayez cette requête dans l’Explorateur Azure Resource Graph :
Azure HPC est une fonctionnalité cloud conçue spécialement pour les charges de travail HPC et IA, qui utilise des processeurs de pointe et une interconnexion InfiniBand de classe HPC pour offrir les meilleures performances, scalabilité et valeur aux applications. Azure HPC permet aux utilisateurs de laisser libre cours à l’innovation, la productivité et l’agilité métier grâce à une gamme de technologies HPC et IA hautement disponibles qui peuvent être allouées dynamiquement à mesure que vos besoins technico
Utilisez Azure Resource Graph pour exécuter certaines requêtes avancées, notamment en utilisant des colonnes, en listant les étiquettes utilisées et en mettant en correspondance des ressources avec des expressions régulières.
Liste d’exemples de requêtes pour Azure Resource Graph. Les catégories incluent Étiquettes, Azure Advisor, Key Vault, Kubernetes, Configuration d’invité, etc.
Découvrez comment le service Azure Resource Graph permet d’exécuter des requêtes complexes sur des ressources à grande échelle entre des abonnements et des locataires.