Consultas de ejemplo de Azure Resource Graph para Azure Virtual machines
Esta página es una colección de consultas de ejemplo de Azure Resource Graph para Azure Virtual Machines.
Consultas de ejemplo
Recuento de instalaciones de actualizaciones de SO realizadas
Devuelve una lista del estado de las ejecuciones de instalación de actualizaciones del sistema operativo realizadas para las máquinas en los últimos siete días.
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"
Recuento de máquinas virtuales por estado de disponibilidad e identificador de suscripción
Devuelve el recuento de máquinas virtuales (tipo Microsoft.Compute/virtualMachines
) agregadas por su estado de disponibilidad en cada una de las suscripciones.
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)"
Número de máquinas virtuales por estado de energía
Devuelve el número de máquinas virtuales (tipo Microsoft.Compute/virtualMachines
) clasificadas según su estado de energía. Para obtener más información sobre los estados de energía, vea Introducción a los estados de energía.
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)"
Count virtual machines by OS type
Basado en la consulta anterior, todavía se limita por los recursos de Azure de tipo Microsoft.Compute/virtualMachines
, pero ya no se limita el número de registros devueltos. En su lugar, hemos usado summarize
y count()
para definir cómo agrupar y agregar los valores por propiedad, que en este ejemplo es properties.storageProfile.osDisk.osType
. Para un ejemplo del aspecto de esta cadena en el objeto completo, vea explorar recursos: detección de máquinas virtuales.
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)"
Recuento de máquinas virtuales por tipo de sistema operativo con extensión
Otra forma de escribir la consulta "Recuento de las máquinas virtuales por tipo de sistema operativo" consiste en aplicar extend
a una propiedad y asignarle un nombre temporal para su uso dentro de la consulta, en este caso os. Después os se usa en summarize
y count()
como en el ejemplo al que se hace referencia.
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)"
Obtención de todas las alertas nuevas de los últimos 30 días
Esta consulta proporciona una lista de todas las alertas nuevas del usuario de los últimos 30 días.
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'"
Obtener la capacidad y el tamaño del conjunto de escalado de máquinas virtuales
Esta consulta busca los recursos del conjunto de escalado de máquinas virtuales y obtiene varios detalles, incluido el tamaño de la máquina virtual y la capacidad del conjunto de escalado. La consulta usa la función toint()
para convertir la capacidad en un número para que se pueda ordenar. Por último, se cambia el nombre de las columnas por propiedades con nombre personalizadas.
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"
Enumeración de todas las extensiones instaladas en una máquina virtual
En primer lugar, esta consulta usa extend
en el tipo de recurso de máquinas virtuales para obtener el identificador en mayúsculas (toupper()
el identificador), el nombre y el tipo del sistema operativo y el tamaño de la máquina virtual. Obtener el identificador de recurso en mayúsculas es una ayuda en la preparación para unirse a otra propiedad. A continuación, la consulta usa join
con kind
como leftouter
para obtener extensiones de máquina virtual mediante la coincidencia de una substring
mayúscula del identificador de extensión. La parte del identificador antes de /extensions/\<ExtensionName\>
es el mismo formato que el identificador de las máquinas virtuales, por lo que usamos esta propiedad para el join
. summarize
después se usa con make_list
en el nombre de la extensión de máquina virtual para combinar el nombre de cada extensión donde id., OSName, OSType, y VMSize son los mismos en una sola propiedad de matriz. Por último, order by
OSName en minúsculas con asc
. De forma predeterminada, el valor predeterminado de order by
es descendente.
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"
Lista de las actualizaciones de SO disponibles para todas las máquinas agrupadas por categoría de actualización
Devuelve una lista de SO pendientes para las máquinas.
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"
Lista de las instalaciones de actualizaciones realizadas en el SO Linux
Devuelve una lista del estado de las ejecuciones de instalación de actualizaciones del sistema operativo Linux Server realizadas para las máquinas en los últimos siete días.
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"
Lista de máquinas virtuales y estados de disponibilidad asociados por identificadores de recursos
Devuelve la lista más reciente de máquinas virtuales (tipo Microsoft.Compute/virtualMachines
) agregadas por estado de disponibilidad. La consulta también proporciona el identificador de recurso asociado basado en properties.targetResourceId
, para facilitar la depuración y la mitigación. Los estados de disponibilidad pueden ser uno de estos cuatro valores: Disponible, No disponible, Degradado y Desconocido. Para más información sobre lo que significa cada uno de los estados de disponibilidad, vea Información general de 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)"
Lista de máquinas virtuales por estado de disponibilidad y estado de energía con identificadores de recursos y grupos de recursos
Devuelve una lista de máquinas virtuales (tipo Microsoft.Compute/virtualMachines
) agregadas en su estado de energía y estado de disponibilidad para proporcionar un estado de mantenimiento coherente para las máquinas virtuales. La consulta también proporciona detalles sobre el grupo de recursos y el identificador de recurso asociados a cada entrada para una visibilidad detallada de los recursos.
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'"
Lista de máquinas virtuales que no están disponibles por identificadores de recurso
Devuelve la lista más reciente de máquinas virtuales (tipo Microsoft.Compute/virtualMachines
) agregadas por su estado de disponibilidad. La lista rellenada solo resalta las máquinas virtuales cuyo estado de disponibilidad no es Disponible para asegurarse de que conoce todos los estados relacionados en los que se encuentran las máquinas virtuales. Cuando todas las máquinas virtuales estén disponibles, puede esperar no recibir ningún resultado.
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)"
Lista de las instalaciones de actualizaciones realizadas en el SO Windows Server
Devuelve una lista del estado de las ejecuciones de instalación de actualizaciones del sistema operativo de Windows Server realizadas para las máquinas en los últimos siete días.
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"
Enumeración de máquinas virtuales con su interfaz de red y dirección IP pública
Esta consulta usa dos comandos leftouter
join
para reunir máquinas virtuales creadas con el modelo de implementación de Resource Manager, sus interfaces de red relacionadas y cualquier dirección IP pública relacionada con esas interfaces de red.
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"
Show all virtual machines ordered by name in descending order
Para enumerar solo las máquinas virtuales (que son de tipo Microsoft.Compute/virtualMachines
), podemos hacer coincidir la propiedad Microsoft.Compute/virtualMachines
en los resultados. De forma similar a la consulta anterior, desc
cambia el order by
a descendente. =~
en el tipo de coincidencia indica a Resource Graph que distinga mayúsculas de minúsculas.
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"
Show first five virtual machines by name and their OS type
En esta consulta se usa top
para recuperar solo cinco registros coincidentes que se ordenan por nombre. El tipo de recurso de Azure es Microsoft.Compute/virtualMachines
. project
indica a Azure Resource Graph qué propiedades se incluirán.
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"
Resumen de la máquina virtual mediante la propiedad extendida de estados de energía
Esta consulta usa las propiedades extendidas de las máquinas virtuales para hacer un resumen por estados de energía.
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)"
Máquinas virtuales que coinciden con regex
Esta consulta busca las máquinas virtuales que coincidan con una expresión regular (conocida como regex). matches regex @ nos permite definir regex para coincidir, que es ^Contoso(.*)[0-9]+$
. Esa definición de regex se explica como:
^
- La coincidencia debe empezar al principio de la cadena.Contoso
: la cadena distingue mayúsculas de minúsculas.(.*)
: una coincidencia de subexpresión:.
- Coincide con cualquier carácter individual (excepto saltos de línea).*
- Coincide con el elemento anterior cero o más veces.
[0-9]
- Coincidencia de grupo caracteres para los números del 0 al 9.+
- Coincide con el elemento anterior una o más veces.$
- La coincidencia del elemento anterior se debe producir al final de la cadena.
Después de la coincidencia del nombre, la consulta proyecta el nombre y ordena por nombre de forma ascendente.
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"
Pasos siguientes
- Obtenga más información sobre el lenguaje de consulta.
- Obtenga más información sobre cómo explorar recursos.