Compartilhar via


Consultas de exemplo do Azure Resource Graph para os servidores habilitados para Azure Arc

Esta página é uma coleção de consultas de exemplo do Azure Resource Graph para os servidores habilitados para Azure Arc.

Dica

Você pode usar o Microsoft Copilot no Azure (versão prévia) para criar consultas do Azure Resource Graph usando a linguagem natural. Para obter mais informações, veja Obter informações do recurso usando o Microsoft Copilot no Azure.

Consultas de exemplo

Obter contagem e percentual de servidores habilitados para Arc por domínio

Esta consulta resume a propriedade domainName em Servidores habilitados para Azure Arc e usa um cálculo com bin para criar uma coluna Pct para a porcentagem de servidores habilitados para Arc por domínio.

Resources
| where type == 'microsoft.hybridcompute/machines'
| project ___domain=tostring(properties.domainName)
| summarize Domains=make_list(___domain), TotalMachineCount=sum(1)
| mvexpand EachDomain = Domains
| summarize PerDomainMachineCount = count() by tostring(EachDomain), TotalMachineCount
| extend Pct = 100 * bin(todouble(PerDomainMachineCount) / todouble(TotalMachineCount), 0.001)
az graph query -q "Resources | where type == 'microsoft.hybridcompute/machines' | project ___domain=tostring(properties.domainName) | summarize Domains=make_list(___domain), TotalMachineCount=sum(1) | mvexpand EachDomain = Domains | summarize PerDomainMachineCount = count() by tostring(EachDomain), TotalMachineCount | extend Pct = 100 * bin(todouble(PerDomainMachineCount) / todouble(TotalMachineCount), 0.001)"

Listar todas as extensões instaladas em um servidor habilitado para Azure Arc

Primeiro, essa consulta usa project no tipo de recurso de computador híbrido para obter a ID em letras maiúsculas (toupper()), obter o nome do computador e o sistema operacional em execução no computador. Obter a ID do recurso em letras maiúsculas é uma boa maneira de se preparar para join à outra propriedade. Em seguida, a consulta usa join com kind como leftouter para obter as extensões fazendo a correspondência com uma substring em maiúsculas da ID da extensão. A parte da ID antes de /extensions/<ExtensionName> tem o mesmo formato que a ID do computador híbrido, portanto, usamos essa propriedade para o join. summarize é então usado com make_list no nome da extensão da máquina virtual para combinar o nome de cada extensão em que ID, OSName e ComputerName são os mesmos em uma só propriedade de matriz. Por fim, ordenamos por OSName em minúsculas com asc. Por padrão, order by é decrescente.

Resources
| where type == 'microsoft.hybridcompute/machines'
| project
  id,
  JoinID = toupper(id),
  ComputerName = tostring(properties.osProfile.computerName),
  OSName = tostring(properties.osName)
| join kind=leftouter(
  Resources
  | where type == 'microsoft.hybridcompute/machines/extensions'
  | project
    MachineId = toupper(substring(id, 0, indexof(id, '/extensions'))),
    ExtensionName = name
) on $left.JoinID == $right.MachineId
| summarize Extensions = make_list(ExtensionName) by id, ComputerName, OSName
| order by tolower(OSName) asc
az graph query -q "Resources | where type == 'microsoft.hybridcompute/machines' | project id, JoinID = toupper(id), ComputerName = tostring(properties.osProfile.computerName), OSName = tostring(properties.osName) | join kind=leftouter( Resources | where type == 'microsoft.hybridcompute/machines/extensions' | project  MachineId = toupper(substring(id, 0, indexof(id, '/extensions'))),  ExtensionName = name ) on \$left.JoinID == \$right.MachineId | summarize Extensions = make_list(ExtensionName) by id, ComputerName, OSName | order by tolower(OSName) asc"

Listar os servidores habilitados para Arc que não executam a última versão lançada do agente

Essa consulta retorna todos os servidores habilitados para Arc que executam uma versão desatualizada do agente do Connected Machine. Os agentes com o status Expirado são excluídos dos resultados. A consulta usa leftouterjoin para reunir as recomendações do Consultor levantadas sobre quaisquer agentes da Máquina Conectada identificados como desatualizados e máquinas de Computador Híbrido para filtrar qualquer agente que não tenha se comunicado com o Azure por um período de tempo.

AdvisorResources
| where type == 'microsoft.advisor/recommendations'
| where properties.category == 'HighAvailability'
| where properties.shortDescription.solution == 'Upgrade to the latest version of the Azure Connected Machine agent'
| project
    id,
    JoinId = toupper(properties.resourceMetadata.resourceId),
    machineName = tostring(properties.impactedValue),
    agentVersion = tostring(properties.extendedProperties.installedVersion),
    expectedVersion = tostring(properties.extendedProperties.latestVersion)
| join kind=leftouter(
  Resources
  | where type == 'microsoft.hybridcompute/machines'
  | project
    machineId = toupper(id),
    status = tostring (properties.status)
  ) on $left.JoinId == $right.machineId
| where status != 'Expired'
| summarize by id, machineName, agentVersion, expectedVersion
| order by tolower(machineName) asc
az graph query -q "AdvisorResources | where type == 'microsoft.advisor/recommendations' | where properties.category == 'HighAvailability' | where properties.shortDescription.solution == 'Upgrade to the latest version of the Azure Connected Machine agent' | project  id,  JoinId = toupper(properties.resourceMetadata.resourceId),  machineName = tostring(properties.impactedValue),  agentVersion = tostring(properties.extendedProperties.installedVersion),  expectedVersion = tostring(properties.extendedProperties.latestVersion) | join kind=leftouter( Resources | where type == 'microsoft.hybridcompute/machines' | project  machineId = toupper(id),  status = tostring (properties.status) ) on \$left.JoinId == \$right.machineId | where status != 'Expired' | summarize by id, machineName, agentVersion, expectedVersion | order by tolower(machineName) asc"

Listar servidores habilitados para Arc com SQL Server, PostgreSQL ou MySQL instalados

Essa consulta retorna todos os servidores habilitados para Arc que têm SQL Server, PostgreSQL ou MySQL instalados.

resources
| where type =~ 'microsoft.hybridcompute/machines'
| extend machineId = tolower(tostring(id)), datacenter = iif(isnull(tags.Datacenter), '', tags.Datacenter), status = tostring(properties.status)
| extend mssqlinstalled = coalesce(tobool(properties.detectedProperties.mssqldiscovered),false)
| extend pgsqlinstalled = coalesce(tobool(properties.detectedProperties.pgsqldiscovered),false)
| extend mysqlinstalled = coalesce(tobool(properties.detectedProperties.mysqldiscovered),false)
| extend osSku = properties.osSku, osName = properties.osName, osVersion = properties.osVersion
| extend coreCount = tostring(properties.detectedProperties.logicalCoreCount), totalPhysicalMemoryinGB = tostring(properties.detectedProperties.totalPhysicalMemoryInGigabytes) 
| extend operatingSystem = iif(isnotnull(osSku), osSku, osName)
| where mssqlinstalled or mysqlinstalled or pgsqlinstalled
| project id ,name, type, resourceGroup, subscriptionId, ___location, kind, osVersion, status, osSku,coreCount,totalPhysicalMemoryinGB,tags, mssqlinstalled, mysqlinstalled, pgsqlinstalled
| sort by (tolower(tostring(name))) asc
az graph query -q "resources | where type =~ 'microsoft.hybridcompute/machines' | extend machineId = tolower(tostring(id)), datacenter = iif(isnull(tags.Datacenter), '', tags.Datacenter), status = tostring(properties.status) | extend mssqlinstalled = coalesce(tobool(properties.detectedProperties.mssqldiscovered),false) | extend pgsqlinstalled = coalesce(tobool(properties.detectedProperties.pgsqldiscovered),false) | extend mysqlinstalled = coalesce(tobool(properties.detectedProperties.mysqldiscovered),false) | extend osSku = properties.osSku, osName = properties.osName, osVersion = properties.osVersion | extend coreCount = tostring(properties.detectedProperties.logicalCoreCount), totalPhysicalMemoryinGB = tostring(properties.detectedProperties.totalPhysicalMemoryInGigabytes)  | extend operatingSystem = iif(isnotnull(osSku), osSku, osName) | where mssqlinstalled or mysqlinstalled or pgsqlinstalled | project id ,name, type, resourceGroup, subscriptionId, ___location, kind, osVersion, status, osSku,coreCount,totalPhysicalMemoryinGB,tags, mssqlinstalled, mysqlinstalled, pgsqlinstalled | sort by (tolower(tostring(name))) asc"

Próximas etapas