Consultas de exemplo do Azure Resource Graph para Máquinas Virtuais do Azure

Esta página é uma coleção de consultas de exemplo do Azure Resource Graph para Máquinas Virtuais do Azure.

Consultas de amostra

Contagem de instalação de atualização do sistema operacional concluída

Retorna uma lista do status da instalação da atualização do sistema operacional executada para suas máquinas nos últimos sete dias.

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"

Contagem de máquinas virtuais por estado de disponibilidade e ID de Subscrição

Devolve a contagem de máquinas virtuais (tipo Microsoft.Compute/virtualMachines) agregadas pelo respetivo estado de disponibilidade em cada uma das suas subscrições.

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)"

Contagem de máquinas virtuais por estado de energia

Retorna a contagem de máquinas virtuais (tipo Microsoft.Compute/virtualMachines) categorizadas de acordo com seu estado de energia. Para obter mais informações sobre estados de energia, consulte Visão geral dos estados de energia.

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)"

Contar máquinas virtuais por tipo de SO

Aproveitando a consulta anterior, estamos ainda limitados pelos recursos do Azure do tipo Microsoft.Compute/virtualMachines, mas já não há limite sobre o número de registros devolvidos. Em vez disso, utilizamos summarize e count() para definir como agrupar e agregar os valores pela propriedade, que, neste exemplo, é properties.storageProfile.osDisk.osType. Para obter um exemplo do aspeto desta cadeia de caracteres no objeto completo, veja explorar recursos – deteção de máquinas virtuais.

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)"

Contar máquinas virtuais por tipo de SO com extensão

Uma maneira diferente de escrever a consulta 'Contar máquinas virtuais por tipo de sistema operacional' é para extend uma propriedade e dar-lhe um nome temporário para uso dentro da consulta, neste caso os. os é então usado por summarize e count() como no exemplo referenciado.

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)"

Receba todos os novos alertas dos últimos 30 dias

Esta consulta fornece uma lista de todos os alertas Novos do usuário, dos últimos 30 dias.

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'"

Obter a capacidade e o tamanho do conjunto de dimensionamento de máquinas virtuais

Esta consulta procura recursos do conjunto de dimensionamento de máquinas virtuais e obtém vários detalhes, incluindo o tamanho da máquina virtual e a capacidade do conjunto de dimensionamento. A consulta utiliza a função toint() para converter a capacidade num número para poder ser ordenado. Por fim, o nome das colunas é mudado para propriedades de nome 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"

Listar todas as extensões instaladas em uma máquina virtual

Primeiro, essa consulta usa extend no tipo de recurso de máquinas virtuais para obter a ID em maiúsculas (toupper()) a ID, obter o nome e o tipo do sistema operacional e obter o tamanho da máquina virtual. Obter o ID do recurso em maiúsculas é uma boa maneira de se preparar para ingressar em outra propriedade. Em seguida, a consulta usa join com kind as leftouter para obter extensões de máquina virtual combinando um maiúsculo substring do ID da extensão. A parte do ID antes /extensions/\<ExtensionName\> é o mesmo formato que o ID de máquinas virtuais, portanto, usamos essa propriedade para o join. summarize é então usado com make_list o nome da extensão de máquina virtual para combinar o nome de cada extensão onde ID, OSName, OSType e VMSize são os mesmos em uma única propriedade de matriz. Por fim, temos order by OSName minúsculo com asc. Por padrão, order by é decrescente.

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"

Listar atualizações de SO disponíveis para todas as suas máquinas agrupadas por categoria de atualização

Retorna uma lista de SO pendentes para suas 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 instalação de atualização do sistema operacional Linux concluída

Retorna uma lista de status do Linux Server - A instalação da atualização do sistema operacional é executada para suas máquinas nos últimos sete dias.

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 virtuais e estados de disponibilidade associados por IDs de recurso

Retorna a lista mais recente de máquinas virtuais (tipo Microsoft.Compute/virtualMachines) agregadas pelo estado de disponibilidade. A consulta também fornece o ID do recurso associado com base no properties.targetResourceId, para facilitar a depuração e a mitigação. Os estados de disponibilidade podem ser um dos quatro valores: Disponível, Indisponível, Degradado e Desconhecido. Para obter mais informações sobre o significado de cada um dos estados de disponibilidade, consulte Visão geral da Integridade dos Recursos do Azure.

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 virtuais por estado de disponibilidade e estado de energia com IDs de Recursos e Grupos de Recursos

Retorna a lista de máquinas virtuais (tipo Microsoft.Compute/virtualMachines) agregadas em seu estado de energia e estado de disponibilidade para fornecer um estado coeso de integridade para suas máquinas virtuais. A consulta também fornece detalhes sobre o grupo de recursos e a ID de recursos associada a cada entrada para visibilidade detalhada de seus 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 virtuais que não estão disponíveis por IDs de Recursos

Retorna a lista mais recente de máquinas virtuais (tipo Microsoft.Compute/virtualMachines) agregadas por seu estado de disponibilidade. A lista preenchida destaca apenas as máquinas virtuais cujo estado de disponibilidade não está disponível para garantir que você esteja ciente de todos os estados preocupantes em que suas máquinas virtuais estão. Quando todas as suas máquinas virtuais estiverem disponíveis, você pode esperar não receber nenhum 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 instalação da atualização do sistema operacional Windows Server concluída

Retorna uma lista de status do Windows Server - A instalação da atualização do sistema operacional executada foi feita para suas máquinas nos últimos sete dias.

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"

Listar máquinas virtuais com sua interface de rede e IP público

Essa consulta usa dois leftouter join comandos para reunir máquinas virtuais criadas com o modelo de implantação do Resource Manager, suas interfaces de rede relacionadas e qualquer endereço IP público relacionado a essas interfaces de rede.

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"

Mostrar todas as máquinas virtuais ordenadas por nome em ordem descendente

Para listar apenas as máquinas virtuais (que são do tipo Microsoft.Compute/virtualMachines), podemos corresponder a propriedade tipo nos resultados. À semelhança da consulta anterior, desc altera order by para ser descendente. O =~ na correspondência de tipo informa o Resource Graph para não ser sensível a maiúsculas e 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"

Mostrar as primeiras cinco máquinas virtuais por nome e por tipo de SO

Essa consulta é usada top para recuperar apenas cinco registros correspondentes ordenados por nome. O tipo do recurso do Azure é Microsoft.Compute/virtualMachines. project informa o Azure Resource Graph quais as propriedades a incluir.

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"

Resumir a máquina virtual pela propriedade estendida de estados de energia

Esta consulta usa as propriedades estendidas em máquinas virtuais para resumir por estados de energia.

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 virtuais correspondidas por regex

Esta consulta procura máquinas virtuais que correspondam a uma expressão regular (conhecida como regex). Os matches regex @ nos permite definir o regex para corresponder, que é ^Contoso(.*)[0-9]+$. Essa definição de regex é explicada como:

  • ^ – A correspondência tem de começar no início da cadeia de caracteres.
  • Contoso - a cadeia sensível às maiúsculas e minúsculas.
  • (.*) - Uma correspondência de subexpressão:
    • . – Corresponde a qualquer caracter único (exceto uma nova linha).
    • * – Corresponde ao elemento anterior zero ou mais vezes.
  • [0-9] – O grupo de caracteres corresponde aos números 0 a 9.
  • + – Corresponde ao elemento anterior uma ou mais vezes.
  • $ – A correspondência do elemento anterior deve ocorrer no final da cadeia de caracteres.

Depois da correspondência por nome, a consulta projeta o nome e ordena por nome em ordem crescente.

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"

Próximos passos