Zkoumání prostředků Azure pomocí služby Resource Graph
Azure Resource Graph vám pomůže rychle a ve velkém zkoumat a objevovat prostředky Azure. Navržená pro rychlé odpovědi je skvělý způsob, jak se seznámit s prostředím a také s vlastnostmi, které existují ve vašich prostředcích Azure.
Poznámka:
V závislosti na tabulce Resource Graph se vlastnosti buď shodují s velikostí písmen, jak je znázorněno na webu Azure Portal, nebo budou nižší.
Například název skupiny prostředků při dotazování resourceContainers
tabulky bude odpovídat portálu, ale resourceGroup
vlastnost prostředků z resources
tabulky bude malá písmena. To může vést k neočekávaným výsledkům a v dotazech je možné použít operátory porovnání bez rozlišování malých a malých písmen, například =~
místo ==
a převod vlastností na malá písmena ve spojeních s tolower()
funkcí.
Prozkoumání virtuálních počítačů
Běžným prostředkem v Azure je virtuální počítač. Jako typ prostředku mají virtuální počítače mnoho vlastností, které je možné dotazovat. Každá vlastnost nabízí možnost filtrování nebo hledání přesně požadovaného prostředku.
Zjišťování virtuálních počítačů
Začněme jednoduchým dotazem, abychom z našeho prostředí získali jeden virtuální počítač a podívali se na vrácené vlastnosti.
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| limit 1
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | limit 1"
(Search-AzGraph -Query "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | limit 1").Data | ConvertTo-Json -Depth 100
Poznámka:
Rutina Azure PowerShellu Search-AzGraph
PSResourceGraphResponse
ve výchozím nastavení vrátí hodnotu. Pokud chcete, aby výstup vypadal stejně jako to, co vrací Azure CLI, ConvertTo-Json
použije se rutina ve Data
vlastnosti. Výchozí hodnota je Depth
2. Nastavení na 100 by mělo převést všechny vrácené úrovně.
Výsledky JSON jsou strukturované podobně jako v následujícím příkladu:
[
{
"id": "/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/ContosoVM1",
"kind": "",
"location": "westus2",
"managedBy": "",
"name": "ContosoVM1",
"plan": {},
"properties": {
"hardwareProfile": {
"vmSize": "Standard_B2s"
},
"networkProfile": {
"networkInterfaces": [
{
"id": "/subscriptions/<subscriptionId>/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/contosovm2222",
"resourceGroup": "MyResourceGroup"
}
]
},
"osProfile": {
"adminUsername": "localAdmin",
"computerName": "ContosoVM1",
"secrets": [],
"windowsConfiguration": {
"enableAutomaticUpdates": true,
"provisionVMAgent": true
}
},
"provisioningState": "Succeeded",
"storageProfile": {
"dataDisks": [],
"imageReference": {
"offer": "WindowsServer",
"publisher": "MicrosoftWindowsServer",
"sku": "2016-Datacenter",
"version": "latest"
},
"osDisk": {
"caching": "ReadWrite",
"createOption": "FromImage",
"diskSizeGB": 127,
"managedDisk": {
"id": "/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_11111111111111111111111111111111",
"resourceGroup": "MyResourceGroup",
"storageAccountType": "Premium_LRS"
},
"name": "ContosoVM1_OsDisk_1_11111111111111111111111111111111",
"osType": "Windows"
}
},
"vmId": "11111111-1111-1111-1111-111111111111"
},
"resourceGroup": "MyResourceGroup",
"sku": {},
"subscriptionId": "<subscriptionId>",
"tags": {},
"type": "microsoft.compute/virtualmachines"
}
]
Vlastnosti nám říkají další informace o samotném prostředku virtuálního počítače. Mezi tyto vlastnosti patří: operační systém, disky, značky a skupina prostředků a předplatné, které je členem.
Virtuální počítače podle umístění
Když jsme se dozvěděli o prostředku virtuálních počítačů, použijeme location
tuto vlastnost k počítání všech virtuálních počítačů podle umístění. Abychom aktualizovali dotaz, odebereme limit a shrneme počet hodnot umístění.
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| summarize count() by location
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by location"
(Search-AzGraph -Query "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by location").Data | ConvertTo-Json
Výsledky JSON jsou strukturované podobně jako v následujícím příkladu:
[
{
"count_": 386,
"location": "eastus"
},
{
"count_": 215,
"location": "southcentralus"
},
{
"count_": 59,
"location": "westus"
}
]
Teď vidíme, kolik virtuálních počítačů máme v každé oblasti Azure.
Virtuální počítače podle skladové položky
Vraťme se k původním vlastnostem virtuálního počítače, zkusme najít všechny virtuální počítače, které mají velikost skladové Standard_B2s
položky . Vrácený json ukazuje, že hodnota je uložena v properties.hardwareprofile.vmsize
. Dotaz aktualizujeme tak, aby našel všechny virtuální počítače, které odpovídají této velikosti, a vrátily pouze název virtuálního počítače a oblasti.
Resources
| where type =~ 'Microsoft.Compute/virtualMachines' and properties.hardwareProfile.vmSize == 'Standard_B2s'
| project name, resourceGroup
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' and properties.hardwareProfile.vmSize == 'Standard_B2s' | project name, resourceGroup"
(Search-AzGraph -Query "Resources | where type =~ 'Microsoft.Compute/virtualMachines' and properties.hardwareProfile.vmSize == 'Standard_B2s' | project name, resourceGroup").Data | ConvertTo-Json
Virtuální počítače připojené k diskům spravovaným na premium
Abychom získali podrobnosti o discích spravovaných úrovní Premium, které jsou připojené k těmto Standard_B2s
virtuálním počítačům, rozbalíme dotaz, abychom vrátili ID prostředku těchto spravovaných disků.
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
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"
(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
Výsledkem je seznam ID disků.
Zjišťování spravovaných disků
Při prvním záznamu z předchozího dotazu prozkoumáte vlastnosti, které existují na spravovaném disku připojeném k prvnímu virtuálnímu počítači. Aktualizovaný dotaz používá ID disku a změní typ.
Příklad výstupu z předchozího dotazu, například:
[
{
"disk_id": "/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_11111111111111111111111111111111"
}
]
Resources
| where type =~ 'Microsoft.Compute/disks' and id == '/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_11111111111111111111111111111111'
Jak jsme věděli type
, že by teď měl být Microsoft.Compute/disks
dotaz? Pokud se podíváte na celé ID, všimnete si /providers/Microsoft.Compute/disks/
v rámci řetězce. Tento fragment řetězce vám poskytne nápovědu k typu, který chcete vyhledat. Alternativní metodou by bylo odebrat limit podle typu a místo toho hledat pouze podle pole ID. Vzhledem k tomu, že ID je jedinečné, vrátí se pouze jeden záznam a type
vlastnost, která obsahuje tyto podrobnosti.
Poznámka:
Aby tento příklad fungoval, musíte pole ID nahradit výsledkem z vašeho vlastního prostředí.
az graph query -q "Resources | where type =~ 'Microsoft.Compute/disks' and id == '/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_11111111111111111111111111111111'"
(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
Výsledky JSON jsou strukturované podobně jako v následujícím příkladu:
[
{
"id": "/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_11111111111111111111111111111111",
"kind": "",
"location": "westus2",
"managedBy": "",
"name": "ContosoVM1_OsDisk_1_11111111111111111111111111111111",
"plan": {},
"properties": {
"creationData": {
"createOption": "Empty"
},
"diskSizeGB": 127,
"diskState": "ActiveSAS",
"provisioningState": "Succeeded",
"timeCreated": "2018-09-14T12:17:32.2570000Z"
},
"resourceGroup": "MyResourceGroup",
"sku": {
"name": "Premium_LRS",
"tier": "Premium"
},
"subscriptionId": "<subscriptionId>",
"tags": {
"environment": "prod"
},
"type": "microsoft.compute/disks"
}
]
Prozkoumání virtuálních počítačů a vyhledání veřejných IP adres
Tato sada dotazů nejprve najde a uloží všechny prostředky síťových rozhraní (NIC) připojených k virtuálním počítačům. Dotazy pak pomocí seznamu síťových adaptérů vyhledá každý prostředek IP adresy, který je veřejnou IP adresou, a uloží tyto hodnoty. Nakonec dotazy poskytují seznam veřejných IP adres.
# Use Resource Graph to get all NICs and store in the 'nics.txt' file
az 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
# 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
V dalším dotazu použijte soubor (Azure CLI) nebo proměnnou (Azure PowerShell) a získejte související podrobnosti o prostředcích síťové karty, které mají připojenou veřejnou IP adresu k síťové kartě.
# Use Resource Graph with the 'nics.txt' file to get all related public IP addresses and store in 'publicIp.txt' file
az 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
# 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
Nakonec pomocí seznamu prostředků veřejných IP adres uložených v souboru (Azure CLI) nebo proměnné (Azure PowerShell) získejte skutečnou veřejnou IP adresu ze souvisejícího objektu a zobrazení.
# Use Resource Graph with the 'ips.txt' file to get the IP address of the public IP address resources
az 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
# 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
Pokud chcete zjistit, jak tyto kroky provést v jednom dotazu s operátorem join
, přejděte na Seznam virtuálních počítačů s jejich síťovým rozhraním a ukázkou veřejné IP adresy .
Další kroky
- Přečtěte si další informace o dotazovacím jazyce.
- Podívejte se na jazyk, který se používá v počátečních dotazech.
- Zobrazení pokročilých použití v rozšířených dotazech