Ukázkové dotazy azure Resource Graphu pro Azure Virtual Machines
Tato stránka je kolekce ukázkových dotazů Azure Resource Graphu pro Azure Virtual Machines.
Vzorové dotazy
Počet dokončených instalací aktualizací operačního systému
Vrátí seznam stavu spuštění instalace aktualizací operačního systému pro vaše počítače za posledních 7 dnů.
PatchAssessmentResources
| where type !has 'softwarepatches'
| extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4))
| extend prop = parse_json(properties)
| extend lTime = todatetime(prop.lastModifiedDateTime), OS = tostring(prop.osType), installedPatchCount = tostring(prop.installedPatchCount), failedPatchCount = tostring(prop.failedPatchCount), pendingPatchCount = tostring(prop.pendingPatchCount), excludedPatchCount = tostring(prop.excludedPatchCount), notSelectedPatchCount = tostring(prop.notSelectedPatchCount)
| where lTime > ago(7d)
| project lTime, RunID=name,machineName, rgName, resourceType, OS, installedPatchCount, failedPatchCount, pendingPatchCount, excludedPatchCount, notSelectedPatchCount
az graph query -q "PatchAssessmentResources | where type !has 'softwarepatches' | extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)) | extend prop = parse_json(properties) | extend lTime = todatetime(prop.lastModifiedDateTime), OS = tostring(prop.osType), installedPatchCount = tostring(prop.installedPatchCount), failedPatchCount = tostring(prop.failedPatchCount), pendingPatchCount = tostring(prop.pendingPatchCount), excludedPatchCount = tostring(prop.excludedPatchCount), notSelectedPatchCount = tostring(prop.notSelectedPatchCount) | where lTime > ago(7d) | project lTime, RunID=name,machineName, rgName, resourceType, OS, installedPatchCount, failedPatchCount, pendingPatchCount, excludedPatchCount, notSelectedPatchCount"
Počet virtuálních počítačů podle stavu dostupnosti a ID předplatného
Vrátí počet virtuálních počítačů (typu Microsoft.Compute/virtualMachines
) agregovaných podle jejich stavu dostupnosti v rámci každého z vašich předplatných.
HealthResources
| where type =~ 'microsoft.resourcehealth/availabilitystatuses'
| summarize count() by subscriptionId, AvailabilityState = tostring(properties.availabilityState)
az graph query -q "HealthResources | where type =~ 'microsoft.resourcehealth/availabilitystatuses' | summarize count() by subscriptionId, AvailabilityState = tostring(properties.availabilityState)"
Počet virtuálních počítačů podle stavu napájení
Vrátí počet virtuálních počítačů (typu Microsoft.Compute/virtualMachines
) zařazených do kategorií podle jejich stavu napájení. Další informace o stavech napájení najdete v tématu Přehled stavů napájení.
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by PowerState = tostring(properties.extended.instanceView.powerState.code)
az graph query -q "Resources | where type == 'microsoft.compute/virtualmachines' | summarize count() by PowerState = tostring(properties.extended.instanceView.powerState.code)"
Počet virtuálních počítačů podle typu operačního systému
Vycházíme z předchozího dotazu a stále omezujeme prostředky Azure na typ Microsoft.Compute/virtualMachines
, ale už neomezujeme počet vrácených záznamů. Místo toho jsme použili summarize
a count()
k definování, jak seskupit a agregovat hodnoty podle vlastností, což je v tomto příkladu properties.storageProfile.osDisk.osType
. Příklad toho, jak tento řetězec vypadá v úplném objektu, najdete v části zjišťování prostředků – objevování virtuálních počítačů.
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| summarize count() by tostring(properties.storageProfile.osDisk.osType)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"
Počet virtuálních počítačů podle typu operačního systému s rozšířením
Jiný způsob, jak napsat dotaz Count virtual machines by OS type (Počet virtuálních počítačů podle typu operačního systému), je vlastnost extend
a dát jí dočasný název pro použití v rámci dotazu, v tomto případě os. os je pak používán summarize
a count()
jako v odkazovaném příkladu.
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| extend os = properties.storageProfile.osDisk.osType
| summarize count() by tostring(os)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | extend os = properties.storageProfile.osDisk.osType | summarize count() by tostring(os)"
Získání všech nových upozornění z posledních 30 dnů
Tento dotaz obsahuje seznam všech nových upozornění uživatele za posledních 30 dnů.
iotsecurityresources
| where type == 'microsoft.iotsecurity/locations/devicegroups/alerts'
| where todatetime(properties.startTimeUtc) > ago(30d) and properties.status == 'New'
az graph query -q "iotsecurityresources | where type == 'microsoft.iotsecurity/locations/devicegroups/alerts' | where todatetime(properties.startTimeUtc) > ago(30d) and properties.status == 'New'"
Získání kapacity a velikosti škálovací sady virtuálních počítačů
Tento dotaz hledá prostředky škálovací sady virtuálních počítačů a získá různé podrobnosti, včetně velikosti virtuálních počítačů a kapacity škálovací sady. Dotaz pomocí funkce toint()
přetypuje kapacitu na číslo, aby bylo možné ji řadit. Nakonec se sloupce přejmenují na vlastní pojmenované vlastnosti.
Resources
| where type=~ 'microsoft.compute/virtualmachinescalesets'
| where name contains 'contoso'
| project subscriptionId, name, location, resourceGroup, Capacity = toint(sku.capacity), Tier = sku.name
| order by Capacity desc
az graph query -q "Resources | where type=~ 'microsoft.compute/virtualmachinescalesets' | where name contains 'contoso' | project subscriptionId, name, location, resourceGroup, Capacity = toint(sku.capacity), Tier = sku.name | order by Capacity desc"
Zobrazení seznamu všech rozšíření nainstalovaných na virtuálním počítači
Nejprve tento dotaz používá extend
typ prostředku virtuálních počítačů k získání ID velkými písmeny (toupper()
), získání názvu a typu operačního systému a získání velikosti virtuálního počítače. Získání ID prostředku velkými písmeny je dobrým způsobem, jak se připravit na připojení k jiné vlastnosti. Potom dotaz použije join
kind
leftouter
k získání rozšíření virtuálních počítačů tak, že odpovídá velkým písmenům substring
ID rozšíření. Část ID před /extensions/\<ExtensionName\>
je stejný formát jako ID virtuálních počítačů, takže tuto vlastnost použijeme pro join
. summarize
se pak použije s make_list
názvem rozšíření virtuálního počítače ke kombinování názvu každé rozšíření, kde ID, OSName, OSType a VMSize jsou stejné do jedné vlastnosti pole. Nakonec jsme order by
malými písmeny OSName s asc
. Ve výchozím nastavení order by
je sestupné.
Resources
| where type == 'microsoft.compute/virtualmachines'
| extend
JoinID = toupper(id),
OSName = tostring(properties.osProfile.computerName),
OSType = tostring(properties.storageProfile.osDisk.osType),
VMSize = tostring(properties.hardwareProfile.vmSize)
| join kind=leftouter(
Resources
| where type == 'microsoft.compute/virtualmachines/extensions'
| extend
VMId = toupper(substring(id, 0, indexof(id, '/extensions'))),
ExtensionName = name
) on $left.JoinID == $right.VMId
| summarize Extensions = make_list(ExtensionName) by id, OSName, OSType, VMSize
| order by tolower(OSName) asc
az graph query -q "Resources | where type == 'microsoft.compute/virtualmachines' | extend JoinID = toupper(id), OSName = tostring(properties.osProfile.computerName), OSType = tostring(properties.storageProfile.osDisk.osType), VMSize = tostring(properties.hardwareProfile.vmSize) | join kind=leftouter( Resources | where type == 'microsoft.compute/virtualmachines/extensions' | extend VMId = toupper(substring(id, 0, indexof(id, '/extensions'))), ExtensionName = name ) on \$left.JoinID == \$right.VMId | summarize Extensions = make_list(ExtensionName) by id, OSName, OSType, VMSize | order by tolower(OSName) asc"
Výpis dostupných aktualizací operačního systému pro všechny počítače seskupené podle kategorie aktualizací
Vrátí seznam nevyřízených operačních systému pro vaše počítače.
PatchAssessmentResources
| where type !has 'softwarepatches'
| extend prop = parse_json(properties)
| extend lastTime = properties.lastModifiedDateTime
| extend updateRollupCount = prop.availablePatchCountByClassification.updateRollup, featurePackCount = prop.availablePatchCountByClassification.featurePack, servicePackCount = prop.availablePatchCountByClassification.servicePack, definitionCount = prop.availablePatchCountByClassification.definition, securityCount = prop.availablePatchCountByClassification.security, criticalCount = prop.availablePatchCountByClassification.critical, updatesCount = prop.availablePatchCountByClassification.updates, toolsCount = prop.availablePatchCountByClassification.tools, otherCount = prop.availablePatchCountByClassification.other, OS = prop.osType
| project lastTime, id, OS, updateRollupCount, featurePackCount, servicePackCount, definitionCount, securityCount, criticalCount, updatesCount, toolsCount, otherCount
az graph query -q "PatchAssessmentResources | where type !has 'softwarepatches' | extend prop = parse_json(properties) | extend lastTime = properties.lastModifiedDateTime | extend updateRollupCount = prop.availablePatchCountByClassification.updateRollup, featurePackCount = prop.availablePatchCountByClassification.featurePack, servicePackCount = prop.availablePatchCountByClassification.servicePack, definitionCount = prop.availablePatchCountByClassification.definition, securityCount = prop.availablePatchCountByClassification.security, criticalCount = prop.availablePatchCountByClassification.critical, updatesCount = prop.availablePatchCountByClassification.updates, toolsCount = prop.availablePatchCountByClassification.tools, otherCount = prop.availablePatchCountByClassification.other, OS = prop.osType | project lastTime, id, OS, updateRollupCount, featurePackCount, servicePackCount, definitionCount, securityCount, criticalCount, updatesCount, toolsCount, otherCount"
Seznam dokončené instalace aktualizace operačního systému Linux
Vrátí seznam stavu linuxového serveru – spuštění instalace aktualizace operačního systému pro vaše počítače za posledních 7 dnů.
PatchAssessmentResources
| where type has 'softwarepatches' and properties has 'version'
| extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)), tostring(RunID = split(id, '/', 10))
| extend prop = parse_json(properties)
| extend lTime = todatetime(prop.lastModifiedDateTime), patchName = tostring(prop.patchName), version = tostring(prop.version), installationState = tostring(prop.installationState), classifications = tostring(prop.classifications)
| where lTime > ago(7d)
| project lTime, RunID, machineName, rgName, resourceType, patchName, version, classifications, installationState
| sort by RunID
az graph query -q "PatchAssessmentResources | where type has 'softwarepatches' and properties has 'version' | extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)), tostring(RunID = split(id, '/', 10)) | extend prop = parse_json(properties) | extend lTime = todatetime(prop.lastModifiedDateTime), patchName = tostring(prop.patchName), version = tostring(prop.version), installationState = tostring(prop.installationState), classifications = tostring(prop.classifications) | where lTime > ago(7d) | project lTime, RunID, machineName, rgName, resourceType, patchName, version, classifications, installationState | sort by RunID"
Seznam virtuálních počítačů a přidružených stavů dostupnosti podle ID prostředků
Vrátí nejnovější seznam virtuálních počítačů (typu Microsoft.Compute/virtualMachines
) agregovaných podle stavu dostupnosti. Dotaz také poskytuje přidružené ID prostředku založené na properties.targetResourceId
, pro snadné ladění a zmírnění rizik. Stavy dostupnosti můžou být jedna ze čtyř hodnot: Dostupná, Nedostupná, Degradovaná a Neznámá. Další informace o tom, co jednotlivé stavy dostupnosti znamenají, najdete v přehledu služby Azure Resource Health.
HealthResources
| where type =~ 'microsoft.resourcehealth/availabilitystatuses'
| summarize by ResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)
az graph query -q "HealthResources | where type =~ 'microsoft.resourcehealth/availabilitystatuses' | summarize by ResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)"
Seznam virtuálních počítačů podle stavu dostupnosti a stavu napájení s ID prostředků a skupinami prostředků
Vrátí seznam virtuálních počítačů (typu Microsoft.Compute/virtualMachines
) agregovaných podle stavu napájení a stavu dostupnosti, aby byly pro vaše virtuální počítače soudržné. Dotaz také poskytuje podrobnosti o skupině prostředků a ID prostředku přidruženém ke každé položce, abyste si podrobně prohlédli vaše prostředky.
Resources
| where type =~ 'microsoft.compute/virtualmachines'
| project resourceGroup, Id = tolower(id), PowerState = tostring( properties.extended.instanceView.powerState.code)
| join kind=leftouter (
HealthResources
| where type =~ 'microsoft.resourcehealth/availabilitystatuses'
| where tostring(properties.targetResourceType) =~ 'microsoft.compute/virtualmachines'
| project targetResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState))
on $left.Id == $right.targetResourceId
| project-away targetResourceId
| where PowerState != 'PowerState/deallocated'
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' | project resourceGroup, Id = tolower(id), PowerState = tostring( properties.extended.instanceView.powerState.code) | join kind=leftouter ( HealthResources | where type =~ 'microsoft.resourcehealth/availabilitystatuses' | where tostring(properties.targetResourceType) =~ 'microsoft.compute/virtualmachines' | project targetResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)) on \$left.Id == \$right.targetResourceId | project-away targetResourceId | where PowerState != 'PowerState/deallocated'"
Seznam virtuálních počítačů, které nejsou dostupné podle ID prostředků
Vrátí nejnovější seznam virtuálních počítačů (typu Microsoft.Compute/virtualMachines
) agregovaných podle jejich stavu dostupnosti. Vyplněný seznam zvýrazní jenom virtuální počítače, jejichž stav dostupnosti není dostupný , abyste měli jistotu, že víte o všech týkajících se stavů, ve kterých jsou virtuální počítače. Pokud jsou všechny virtuální počítače dostupné, můžete očekávat, že se nezobrazí žádné výsledky.
HealthResources
| where type =~ 'microsoft.resourcehealth/availabilitystatuses'
| where tostring(properties.availabilityState) != 'Available'
| summarize by ResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)
az graph query -q "HealthResources | where type =~ 'microsoft.resourcehealth/availabilitystatuses' | where tostring(properties.availabilityState) != 'Available' | summarize by ResourceId = tolower(tostring(properties.targetResourceId)), AvailabilityState = tostring(properties.availabilityState)"
Seznam dokončené instalace aktualizace operačního systému Windows Server
Vrátí seznam stavu Windows Serveru – instalace aktualizací operačního systému se provádí pro vaše počítače za posledních 7 dnů.
PatchAssessmentResources
| where type has 'softwarepatches' and properties !has 'version'
| extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)), tostring(RunID = split(id, '/', 10))
| extend prop = parse_json(properties)
| extend lTime = todatetime(prop.lastModifiedDateTime), patchName = tostring(prop.patchName), kbId = tostring(prop.kbId), installationState = tostring(prop.installationState), classifications = tostring(prop.classifications)
| where lTime > ago(7d)
| project lTime, RunID, machineName, rgName, resourceType, patchName, kbId, classifications, installationState
| sort by RunID
az graph query -q "PatchAssessmentResources | where type has 'softwarepatches' and properties !has 'version' | extend machineName = tostring(split(id, '/', 8)), resourceType = tostring(split(type, '/', 0)), tostring(rgName = split(id, '/', 4)), tostring(RunID = split(id, '/', 10)) | extend prop = parse_json(properties) | extend lTime = todatetime(prop.lastModifiedDateTime), patchName = tostring(prop.patchName), kbId = tostring(prop.kbId), installationState = tostring(prop.installationState), classifications = tostring(prop.classifications) | where lTime > ago(7d) | project lTime, RunID, machineName, rgName, resourceType, patchName, kbId, classifications, installationState | sort by RunID"
Výpis virtuálních počítačů se síťovým rozhraním a veřejnou IP adresou
Tento dotaz používá dva leftouter
join
příkazy k propojení virtuálních počítačů vytvořených pomocí modelu nasazení Resource Manager, souvisejících síťových rozhraní a všech veřejných IP adres souvisejících s těmito síťovými rozhraními.
Resources
| where type =~ 'microsoft.compute/virtualmachines'
| extend nics=array_length(properties.networkProfile.networkInterfaces)
| mv-expand nic=properties.networkProfile.networkInterfaces
| where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic)
| project vmId = id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), nicId = tostring(nic.id)
| join kind=leftouter (
Resources
| where type =~ 'microsoft.network/networkinterfaces'
| extend ipConfigsCount=array_length(properties.ipConfigurations)
| mv-expand ipconfig=properties.ipConfigurations
| where ipConfigsCount == 1 or ipconfig.properties.primary =~ 'true'
| project nicId = id, publicIpId = tostring(ipconfig.properties.publicIPAddress.id))
on nicId
| project-away nicId1
| summarize by vmId, vmName, vmSize, nicId, publicIpId
| join kind=leftouter (
Resources
| where type =~ 'microsoft.network/publicipaddresses'
| project publicIpId = id, publicIpAddress = properties.ipAddress)
on publicIpId
| project-away publicIpId1
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' | extend nics=array_length(properties.networkProfile.networkInterfaces) | mv-expand nic=properties.networkProfile.networkInterfaces | where nics == 1 or nic.properties.primary =~ 'true' or isempty(nic) | project vmId = id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), nicId = tostring(nic.id) | join kind=leftouter ( Resources | where type =~ 'microsoft.network/networkinterfaces' | extend ipConfigsCount=array_length(properties.ipConfigurations) | mv-expand ipconfig=properties.ipConfigurations | where ipConfigsCount == 1 or ipconfig.properties.primary =~ 'true' | project nicId = id, publicIpId = tostring(ipconfig.properties.publicIPAddress.id)) on nicId | project-away nicId1 | summarize by vmId, vmName, vmSize, nicId, publicIpId | join kind=leftouter ( Resources | where type =~ 'microsoft.network/publicipaddresses' | project publicIpId = id, publicIpAddress = properties.ipAddress) on publicIpId | project-away publicIpId1"
Zobrazení všech virtuálních počítačů, které jsou seřazené podle názvu v sestupném pořadí
Když chceme vypsat pouze virtuální počítače (typ Microsoft.Compute/virtualMachines
), můžeme ve výsledcích porovnat shodu vlastnosti type (Typ). Podobně jako v předchozím dotazu musí být změny desc
order by
být řazeny sestupně. =~
ve shodě typu říká Azure Resource Graphu aby nerozlišoval malá a velká písmena.
Resources
| project name, location, type
| where type =~ 'Microsoft.Compute/virtualMachines'
| order by name desc
az graph query -q "Resources | project name, location, type | where type =~ 'Microsoft.Compute/virtualMachines' | order by name desc"
Zobrazení prvních pěti virtuálních počítačů podle názvu a jejich typu operačního systému
Tento dotaz používá top
pouze k načtení pěti odpovídajících záznamů, které jsou seřazené podle názvu. Typ prostředku Azure je Microsoft.Compute/virtualMachines
. project
říká Azure Resource Graph, které vlastnosti použít.
Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project name, properties.storageProfile.osDisk.osType
| top 5 by name desc
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project name, properties.storageProfile.osDisk.osType | top 5 by name desc"
Shrnutí virtuálního počítače rozšířenými stavy napájení
Tento dotaz používá rozšířené vlastnosti virtuálních počítačů ke shrnutí podle stavů napájení.
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
az graph query -q "Resources | where type == 'microsoft.compute/virtualmachines' | summarize count() by tostring(properties.extended.instanceView.powerState.code)"
Virtuální počítače odpovídající regulárnímu výrazu
Tento dotaz vyhledá virtuální počítače, které odpovídají regulárnímu výrazu (označovanému jako regulární výraz). Odpovídá regulární výraz @ umožňuje definovat regulární výraz, který se má shodovat, což je ^Contoso(.*)[0-9]+$
. Tato definice regulárního výrazu je vysvětlena jako:
^
– Porovnání musí začít na začátku řetězce.Contoso
– Řetězec s rozlišováním velkých a malých písmen.(.*)
- Shoda dílčího výrazu:.
– Odpovídá jakémukoli jednomu znaku (s výjimkou nového řádku).*
– Shoduje se s předchozím prvkem nulakrát nebo vícekrát.
[0-9]
– Shoda skupiny znaků pro čísla 0 až 9.+
– Shoduje se s předchozím prvkem jednou nebo vícekrát.$
– Shoda s předchozím prvkem se musí vyskytovat na konci řetězce.
Po porovnání podle názvu, dotaz promítne název a pořadí vzestupně podle názvu.
Resources
| where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$'
| project name
| order by name asc
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+\$' | project name | order by name asc"
Další kroky
- Přečtěte si další informace o dotazovacím jazyce.
- Přečtěte si další informace o tom, jak prozkoumat prostředky.