Explore your Azure resources with Resource Graph
Az Azure Resource Graph segít az Azure-erőforrások gyors és nagy léptékű felderítésében. A gyors válaszokra tervezve nagyszerű módja annak, hogy megismerje a környezetet és az Azure-erőforrásokon található tulajdonságokat.
Megjegyzés:
A Resource Graph táblától függően a tulajdonságok vagy megegyeznek az Azure Portalon látható burkolattal, vagy kisbetűsek lesznek.
A tábla lekérdezésekor például egy erőforráscsoport neve megegyezik a resourceContainers
portállal, de a resourceGroup
táblában lévő resources
erőforrások tulajdonsága kisbetűs lesz. Ez váratlan eredményeket okozhat, és a lekérdezésekben kis- és nagybetűket nem érzéketlen összehasonlító operátorokkal, például =~
==
a tulajdonságokat kisbetűssé alakíthatja a tolower()
függvényhez való illesztésekben.
Virtuális gépek felfedezése
Az Azure-ban gyakori erőforrás egy virtuális gép. Erőforrástípusként a virtuális gépek számos olyan tulajdonsággal rendelkeznek, amelyek lekérdezhetők. Minden tulajdonság lehetőséget biztosít a szűrésre vagy a keresett erőforrás pontos megkeresésére.
Virtuális gépek felderítése
Kezdjük egy egyszerű lekérdezéssel, hogy egyetlen virtuális gépet szerezzünk be a környezetünkből, és nézzük meg a visszaadott tulajdonságokat.
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
Megjegyzés:
Az Azure PowerShell-parancsmag Search-AzGraph
alapértelmezés szerint egy PSResourceGraphResponse értéket ad vissza. Ahhoz, hogy a kimenet ugyanúgy nézzen ki, mint az Azure CLI által visszaadott, a ConvertTo-Json
parancsmag az Adat tulajdonságban lesz használva. A Mélységalapértelmezett értéke 2. Ha 100-ra állítja, az összes visszaadott szintet konvertálja.
A JSON-eredmények a következő példához hasonlóan vannak strukturálva:
[
{
"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/contosovm1535",
"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_9676b7e1b3c44e2cb672338ebe6f5166",
"resourceGroup": "MyResourceGroup",
"storageAccountType": "Premium_LRS"
},
"name": "ContosoVM1_OsDisk_1_9676b7e1b3c44e2cb672338ebe6f5166",
"osType": "Windows"
}
},
"vmId": "bbb9b451-6dc7-4117-bec5-c971eb1118c6"
},
"resourceGroup": "MyResourceGroup",
"sku": {},
"subscriptionId": "<subscriptionId>",
"tags": {},
"type": "microsoft.compute/virtualmachines"
}
]
A tulajdonságok további információkat közölnek magáról a virtuálisgép-erőforrásról. Ezek a tulajdonságok a következők: operációs rendszer, lemezek, címkék, valamint az erőforráscsoport és az előfizetés, amelynek tagja.
Virtuális gépek hely szerint
A virtuális gépek erőforrásáról tanultak alapján használjuk a hely tulajdonságot az összes virtuális gép hely szerinti megszámlálásához. A lekérdezés frissítéséhez eltávolítjuk a korlátot, és összegezzük a helyértékek számát.
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
A JSON-eredmények a következő példához hasonlóan vannak strukturálva:
[
{
"count_": 386,
"location": "eastus"
},
{
"count_": 215,
"location": "southcentralus"
},
{
"count_": 59,
"location": "westus"
}
]
Most már láthatjuk, hogy hány virtuális gépünk van az egyes Azure-régiókban.
Virtuális gépek termékváltozat szerint
Visszatérve az eredeti virtuális gép tulajdonságaira, próbáljuk meg megtalálni az összes olyan virtuális gépet, amely termékváltozat-mérete Standard_B2s. A visszaadott JSON azt mutatja, hogy a properties.hardwareprofile.vmsize fájlban van tárolva. Frissítjük a lekérdezést, hogy megkeressük az összes olyan virtuális gépet, amely megfelel ennek a méretnek, és csak a virtuális gép és a régió nevét adja vissza.
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
Prémium szintű felügyelt lemezekhez csatlakoztatott virtuális gépek
A Standard_B2s virtuális gépekhez csatolt prémium szintű felügyelt lemezek részleteinek lekéréséhez kiterjesztjük a lekérdezést a felügyelt lemezek erőforrás-azonosítójának visszaadásához.
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
Az eredmény a lemezazonosítók listája.
Felügyelt lemez felderítése
Az előző lekérdezés első rekordjával megismerjük az első virtuális géphez csatolt felügyelt lemezen található tulajdonságokat. A frissített lekérdezés a lemezazonosítót használja, és módosítja a típust.
Példakimenet az előző lekérdezésből, például:
[
{
"disk_id": "/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_9676b7e1b3c44e2cb672338ebe6f5166"
}
]
Resources
| where type =~ 'Microsoft.Compute/disks' and id == '/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_9676b7e1b3c44e2cb672338ebe6f5166'
A lekérdezés futtatása előtt honnan tudtuk, hogy a típusnak most a Microsoft.Compute/disks típusnak kell lennie? Ha megtekinti a teljes azonosítót, a sztring részeként a /providers/Microsoft.Compute/disks/ fog megjelenni. Ez a sztringtöredék arra utal, hogy milyen típusú keresésre van szüksége. Egy másik módszer az lenne, ha típus szerint eltávolítaná a korlátot, és ehelyett csak az Azonosító mező alapján keresne. Mivel az azonosító egyedi, a rendszer csak egy rekordot ad vissza, és a rajta lévő típustulajdonság biztosítja ezt a részletet.
Megjegyzés:
Ahhoz, hogy ez a példa működjön, az azonosító mezőt a saját környezetéből származó eredményre kell cserélnie.
az graph query -q "Resources | where type =~ 'Microsoft.Compute/disks' and id == '/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_9676b7e1b3c44e2cb672338ebe6f5166'"
(Search-AzGraph -Query "Resources | where type =~ 'Microsoft.Compute/disks' and id == '/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_9676b7e1b3c44e2cb672338ebe6f5166'").Data | ConvertTo-Json
A JSON-eredmények a következő példához hasonlóan vannak strukturálva:
[
{
"id": "/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_9676b7e1b3c44e2cb672338ebe6f5166",
"kind": "",
"location": "westus2",
"managedBy": "",
"name": "ContosoVM1_OsDisk_1_9676b7e1b3c44e2cb672338ebe6f5166",
"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"
}
]
Virtuális gépek felfedezése nyilvános IP-címek kereséséhez
Ez a lekérdezéskészlet először megkeresi és tárolja a virtuális gépekhez csatlakoztatott összes hálózati adapter -erőforrást. Ezután a lekérdezések a hálózati adapterek listájával megkeresik a nyilvános IP-címként megadott ip-címerőforrásokat, és tárolják ezeket az értékeket. Végül a lekérdezések a nyilvános IP-címek listáját adják meg.
# 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
A következő lekérdezésben használja a fájlt (Azure CLI) vagy változót (Azure PowerShell) a kapcsolódó hálózati adapter erőforrásainak részleteinek lekéréséhez, ahol egy nyilvános IP-cím van csatolva a hálózati adapterhez.
# 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
Végül használja a fájlban (Azure CLI) vagy változóban (Azure PowerShell) tárolt nyilvános IP-címerőforrások listáját, hogy lekérje a tényleges nyilvános IP-címet a kapcsolódó objektumból és megjelenítésből.
# 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
Ha meg szeretné tudni, hogyan hajthatja végre ezeket a lépéseket egyetlen lekérdezésben az join
operátorral, tekintse meg a virtuális gépek listázását a hálózati adapterrel és a nyilvános IP-mintával .