Compartir a través de


Consultas de ejemplo de Azure Resource Graph para servidores habilitados para Azure Arc

Azure Resource Graph es un servicio de Azure que le permite consultar a escala, lo que le ayuda a controlar eficazmente el entorno. Las consultas se crean mediante el lenguaje de consulta kusto (KQL). Para más información, consulte Descripción del lenguaje de consulta de Azure Resource Graph.

En este artículo se proporciona una lista de consultas de Azure Resource Graph de ejemplo para servidores habilitados para Azure Arc. Estas consultas tienen como destino el microsoft.hybridcompute/machines tipo de recurso y devuelven información como la pertenencia al dominio, las extensiones instaladas, las versiones del agente y los detalles del sistema operativo. Puede ejecutar estas consultas a través de Azure PowerShell o la CLI de Azure, o bien en Azure Portal mediante el Explorador de Resource Graph. Modifique las consultas para satisfacer sus necesidades.

Sugerencia

Puede usar Microsoft Copilot en Azure para crear consultas de Azure Resource Graph mediante lenguaje natural. Para obtener más información, consulte Obtención de información de recursos con Microsoft Copilot en Azure.

Consultas de ejemplo

Obtención del recuento y el porcentaje de servidores habilitados para Arc por dominio

En esta consulta se resume la propiedad domainName en servidores habilitados para Azure Arc y se usa un cálculo con bin para crear una columna Pct para el porcentaje de servidores habilitados para Arc por dominio.

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

Enumeración de todas las extensiones instaladas en un servidor habilitado para Azure Arc

En primer lugar, esta consulta usa project en el tipo de recurso de máquina híbrida para obtener el identificador en mayúsculas (toupper()), obtener el nombre del equipo y el sistema operativo que se ejecuta en la máquina. Obtener el identificador de recurso en mayúsculas es una ayuda en la preparación para join a otra propiedad. A continuación, la consulta utiliza join con kind como leftouter para obtener las extensiones mediante la coincidencia de una substring en mayúsculas del id. de extensión. La parte del identificador antes de /extensions/<ExtensionName> tiene el mismo formato que el identificador de máquina híbrida, por lo que usamos esta propiedad para join. summarize se usa entonces 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 y ComputerName son iguales en una única propiedad de matriz. Por último, se ordena por OSName en minúsculas con asc. De forma predeterminada, el valor predeterminado de order by es descendente.

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"

Enumeración de los servidores habilitados para Arc que no ejecutan la versión del agente publicada más recientemente

Esta consulta devuelve todos los servidores habilitados para Arc que ejecutan una versión obsoleta del agente de Connected Machine. Los agentes que tengan el estado Expirado se excluirán de los resultados. La consulta utiliza leftouterjoin para reunir las recomendaciones de Advisor generadas sobre los agentes de Connected Machine identificados como obsoletos y los agentes de máquinas híbridas para filtrar cualquier agente que no se haya comunicado con Azure durante un período de tiempo.

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"

Enumeración de servidores habilitados para Arc con SQL Server, PostgreSQL o MySQL instalados

Esta consulta devuelve todos los servidores habilitados para Arc que tienen instalado SQL Server, PostgreSQL o MySQL.

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"

Pasos siguientes