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 .

További lépések

  • További információ a lekérdezés nyelvéről.
  • Tekintse meg a kezdő lekérdezésekben használt nyelvet.
  • A speciális lekérdezések speciális felhasználási módjai.