Azure Resource Graph vous permet d’explorer et de détecter vos ressources Azure rapidement et à l’échelle. Conçu pour fournir des réponses rapides, il s’avère très efficace pour en apprendre davantage sur votre environnement, mais aussi sur les propriétés présentes sur vos ressources Azure.
Notes
Selon le tableau Resource Graph, les propriétés respecteront la casse telle qu’elle apparaît dans le portail Azure ou seront en minuscules.
Par exemple, le nom d’un groupe de ressources lors de l’interrogation du tableau resourceContainers correspondra au portail, mais la propriété resourceGroup des ressources du tableau resources sera en minuscules. Ceci peut engendrer des résultats inattendus et peut être pris en compte dans vos requêtes en utilisant des opérateurs de comparaison qui ne sont pas sensibles à la casse, tels que =~ au lieu de ==, et en convertissant les propriétés en minuscules dans les jointures à l’aide de la fonction tolower().
Explorer des machines virtuelles
Dans Azure, les machines virtuelles sont des ressources courantes. En tant que type de ressource, les machines virtuelles comptent de nombreuses propriétés qui peuvent faire l’objet de requêtes. Chaque propriété propose une option pour filtrer ou trouver exactement la ressource que vous recherchez.
Détection des machines virtuelles
Commençons avec une requête simple qui vise à obtenir une seule machine virtuelle dans notre environnement et examinons les propriétés renvoyées.
Kusto
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| limit1
Azure CLI
az graph query -q"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | limit 1"
Azure PowerShell
(Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | limit 1").Data | ConvertTo-Json -Depth100
Notes
La cmdlet Azure PowerShell Search-AzGraph renvoie un objet PSResourceGraphResponse par défaut. Pour que la sortie soit identique à celle renvoyée par Azure CLI, la cmdlet ConvertTo-Json est utilisée sur la propriété Data. La valeur par défaut pour Depth est 2. Définissez-le sur 100 pour convertir tous les niveaux renvoyés.
Les résultats JSON sont structurés de façon similaire à l’exemple suivant :
Les propriétés donnent des informations supplémentaires sur la ressource de la machine virtuelle proprement dite : système d’exploitation, disques, balises, groupe de ressources et abonnement dont elle est membre, etc.
Machines virtuelles par emplacement
Sur la base de ce que nous avons appris sur la ressource de machine virtuelle, nous allons utiliser la propriété location pour compter toutes les machines virtuelles par emplacement. Pour mettre à jour la requête, nous supprimons la limite et résumer le nombre de valeurs d’emplacement.
Kusto
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| summarizecount() by location
Azure CLI
az graph query -q"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by location"
Azure PowerShell
(Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by location").Data | ConvertTo-Json
Les résultats JSON sont structurés de façon similaire à l’exemple suivant :
Nous pouvons maintenant voir combien de machines virtuelles nous avons dans chaque région Azure.
Machines virtuelles par référence (SKU)
Après avoir rétabli les propriétés de machine virtuelle d’origine, essayons de trouver toutes les machines virtuelles dont la taille SKU est Standard_B2s. Le json retourné indique que la valeur est stockée dans properties.hardwareprofile.vmsize. Nous mettons à jour la requête de façon à trouver toutes les machines virtuelles qui ont cette taille et pour que seuls le nom et la région des machines virtuelles soient retournés.
Kusto
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'and properties.hardwareProfile.vmSize == 'Standard_B2s'
| project name, resourceGroup
Azure CLI
az graph query -q"Resources | where type =~ 'Microsoft.Compute/virtualMachines' and properties.hardwareProfile.vmSize == 'Standard_B2s' | project name, resourceGroup"
Azure PowerShell
(Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Compute/virtualMachines' and properties.hardwareProfile.vmSize == 'Standard_B2s' | project name, resourceGroup").Data | ConvertTo-Json
Machines virtuelles connectées à des disques managés Premium
Pour obtenir les détails des disques managés Premium attachés à ces machines virtuelles Standard_B2s, nous étendons la requête de façon à retourner l’ID de la ressource de ces disques managés.
Kusto
Resources
| where type =~ 'Microsoft.Compute/virtualmachines'and properties.hardwareProfile.vmSize == 'Standard_B2s'
| extend disk = properties.storageProfile.osDisk.managedDisk
| where disk.storageAccountType == 'Premium_LRS'
| project disk.id
Azure CLI
az graph query -q"Resources | where type =~ 'Microsoft.Compute/virtualmachines' and properties.hardwareProfile.vmSize == 'Standard_B2s' | extend disk = properties.storageProfile.osDisk.managedDisk | where disk.storageAccountType == 'Premium_LRS' | project disk.id"
Azure PowerShell
(Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Compute/virtualmachines' and properties.hardwareProfile.vmSize == 'Standard_B2s' | extend disk = properties.storageProfile.osDisk.managedDisk | where disk.storageAccountType == 'Premium_LRS' | project disk.id").Data | ConvertTo-Json
Le résultat obtenu est une liste d’ID de disques.
Détection des disques managés
Avec le premier enregistrement de la requête précédente, nous explorons les propriétés qui existent sur le disque managé qui a été attaché à la première machine virtuelle. La requête mise à jour utilise l’ID de disque et modifie le type.
Exemple de sortie de la requête précédente, par exemple :
Resources
| where type =~ 'Microsoft.Compute/disks'and id == '/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_11111111111111111111111111111111'
Avant d’exécuter la requête, comment saviez-nous que le type devrait maintenant être Microsoft.Compute/disks ? Si vous examinez l’ID complet, vous remarquez /providers/Microsoft.Compute/disks/ dans le cadre de la chaîne. Ce fragment de chaîne vous donne une indication du type à rechercher. Une autre méthode consiste à retirer la limite par type et à effectuer à la place une recherche sur le champ ID uniquement. Comme l’ID est unique, un seul enregistrement est retourné et la propriété type de ce dernier fournit ce détail.
Notes
Pour que cet exemple fonctionne, vous devez remplacer la valeur du champ ID par un résultat tiré de votre propre environnement.
Azure CLI
az graph query -q"Resources | where type =~ 'Microsoft.Compute/disks' and id == '/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_11111111111111111111111111111111'"
Azure PowerShell
(Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Compute/disks' and id == '/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_11111111111111111111111111111111'").Data | ConvertTo-Json
Les résultats JSON sont structurés de façon similaire à l’exemple suivant :
Explorer des machines virtuelles pour trouver des adresses IP publiques
Cet ensemble de requêtes recherche et stocke d’abord toutes les ressources de cartes réseaux (NIC) connectées à des machines virtuelles. Les requêtes utilisent ensuite la liste des cartes réseau pour trouver chaque ressource d’adresse IP qui correspond à une adresse IP publique et stocke ces valeurs. Puis, les requêtes fournissent la liste des adresses IP publiques.
Azure CLI
# Use Resource Graph to get all NICs and store in the 'nics.txt' fileaz graph query -q"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project nic = tostring(properties['networkProfile']['networkInterfaces'][0]['id']) | where isnotempty(nic) | distinct nic | limit 20"--output table | tail -n +3 > nics.txt
# Review the output of the query stored in 'nics.txt'
cat nics.txt
Azure PowerShell
# Use Resource Graph to get all NICs and store in the $nics variable$nics = (Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project nic = tostring(properties['networkProfile']['networkInterfaces'][0]['id']) | where isnotempty(nic) | distinct nic | limit 20").Data
# Review the output of the query stored in the variable$nics.nic
Dans la requête suivante, utilisez le fichier (Azure CLI) ou la variable (Azure PowerShell) pour obtenir les détails des ressources de la carte d’interface réseau qui ont une adresse IP publique attachée à la carte d’interface réseau.
Azure CLI
# Use Resource Graph with the 'nics.txt' file to get all related public IP addresses and store in 'publicIp.txt' fileaz graph query -q="Resources | where type =~ 'Microsoft.Network/networkInterfaces' | where id in ('$(awk -vORS="','" '{print $0}' nics.txt | sed 's/,$//')') | project publicIp = tostring(properties['ipConfigurations'][0]['properties']['publicIPAddress']['id']) | where isnotempty(publicIp) | distinct publicIp"--output table | tail -n +3 > ips.txt
# Review the output of the query stored in 'ips.txt'
cat ips.txt
Azure PowerShell
# Use Resource Graph with the $nics variable to get all related public IP addresses and store in $ips variable$ips = (Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Network/networkInterfaces' | where id in ('$($nics.nic -join "','")') | project publicIp = tostring(properties['ipConfigurations'][0]['properties']['publicIPAddress']['id']) | where isnotempty(publicIp) | distinct publicIp").Data
# Review the output of the query stored in the variable$ips.publicIp
Enfin, nous allons utiliser la liste de ressources d’adresse IP publique stockée dans le fichier (Azure CLI) ou la variable (Azure PowerShell) pour obtenir et afficher leur adresse IP publique réelle à partir de l'objet associé.
Azure CLI
# Use Resource Graph with the 'ips.txt' file to get the IP address of the public IP address resourcesaz graph query -q="Resources | where type =~ 'Microsoft.Network/publicIPAddresses' | where id in ('$(awk -vORS="','" '{print $0}' ips.txt | sed 's/,$//')') | project ip = tostring(properties['ipAddress']) | where isnotempty(ip) | distinct ip"--output table
Azure PowerShell
# Use Resource Graph with the $ips variable to get the IP address of the public IP address resources
(Search-AzGraph -Query"Resources | where type =~ 'Microsoft.Network/publicIPAddresses' | where id in ('$($ips.publicIp -join "','")') | project ip = tostring(properties['ipAddress']) | where isnotempty(ip) | distinct ip").Data | ConvertTo-Json
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
Faites la démonstration de la conception, de l’implémentation et de la maintenance de l’infrastructure de mise en réseau, du trafic d’équilibrage de charge, du routage réseau Azure et bien plus encore.
Utilisez Azure Resource Graph pour exécuter certaines requêtes de démarrage, notamment compter des ressources ou les trier, par exemple selon une étiquette spécifique.
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.
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.
Liste d’exemples de requêtes pour Azure Resource Graph. Les catégories incluent Étiquettes, Azure Advisor, Key Vault, Kubernetes, Configuration d’invité, etc.