Freigeben über


Azure Resource Graph-Beispielabfragen für Server mit Azure Arc-Unterstützung

Azure Resource Graph ist ein Azure-Dienst, mit dem Sie in großem Maßstab Abfragen durchführen können, um Ihre Umgebung effektiv zu verwalten. Sie erstellen Abfragen mithilfe der Kusto Query Language (KQL). Weitere Informationen finden Sie unter Grundlegendes zur Azure Resource Graph-Abfragesprache.

Dieser Artikel enthält eine Liste der Azure Resource Graph-Beispielabfragen für Azure Arc-fähige Server. Diese Abfragen zielen auf den microsoft.hybridcompute/machines Ressourcentyp ab und geben Informationen wie Domänenmitgliedschaft, installierte Erweiterungen, Agentversionen und Betriebssystemdetails zurück. Sie können diese Abfragen über Azure PowerShell oder Azure CLI oder im Azure-Portal mithilfe des Ressourcendiagramm-Explorers ausführen. Ändern Sie die Abfragen entsprechend Ihren Anforderungen.

Tipp

Sie können Microsoft Copilot in Azure verwenden, um Azure Resource Graph-Abfragen mit natürlicher Sprache zu erstellen. Weitere Informationen finden Sie unter Abrufen von Ressourceninformationen mithilfe von Microsoft Copilot in Azure.

Beispielabfragen

Abrufen der Anzahl und des Prozentsatzes von Servern mit Arc-Unterstützung nach Domäne

Diese Abfrage fasst die Eigenschaft domainName auf Servern mit Azure Arc-Unterstützung zusammen und verwendet eine Berechnung mit bin, um die Spalte Pct für den Prozentsatz von Servern mit Arc-Unterstützung pro Domäne zu erstellen.

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

Auflisten aller Erweiterungen, die auf einem Server mit Azure Arc-Unterstützung installiert sind

Zunächst verwendet diese Abfrage project für den Hybridcomputer-Ressourcentyp, um die ID in Großbuchstaben (toupper()), den Computernamen und das auf dem Computer ausgeführte Betriebssystem abzurufen. Das Abrufen der Ressourcen-ID in Großbuchstaben ist eine gute Möglichkeit, um einen join-Vorgang für eine andere Eigenschaft vorzubereiten. Anschließend wird für die Abfrage join mit kind für leftouter verwendet, um Erweiterungen abzurufen. Hierfür wird ein Abgleich mit dem substring-Element der Erweiterungs-ID in Großbuchstaben durchgeführt. Da der Teil der ID vor /extensions/<ExtensionName> das gleiche Format wie die ID des Hybridcomputers hat, verwenden Sie diese Eigenschaft für den join-Vorgang. summarize wird dann mit make_list im Namen der VM-Erweiterung verwendet, um die Namen der einzelnen Erweiterungen zu kombinieren. Hierbei sind ID, OSName und ComputerName für jede Arrayeigenschaft jeweils identisch. Abschließend erfolgt eine Sortierung in Kleinbuchstaben nach OSName mit asc. Standardmäßig wird für order by „descending“ (absteigend) und nicht „ascending“ (aufsteigend) verwendet.

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"

Auflisten von Servern mit Arc-Unterstützung, auf denen nicht die neueste veröffentlichte Agent-Version ausgeführt wird

Diese Abfrage gibt alle Server mit Arc-Unterstützung zurück, auf denen eine veraltete Version des Connected Machine-Agents ausgeführt wird. Agents mit dem Status Abgelaufen werden aus den Ergebnissen ausgeschlossen. Die Abfrage verwendet leftouterjoin, um die Advisor-Empfehlungen zu allen Connected Machine-Agents, die als veraltet identifiziert wurden, und Hybridcomputern zusammenzuführen, um alle Agents herauszufiltern, die über einen bestimmten Zeitraum nicht mit Azure kommuniziert haben.

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"

Liste Arc-fähige Server mit installiertem SQL Server, PostgreSQL oder MySQL

Diese Abfrage gibt alle Arc-fähigen Server zurück, auf denen SQL Server, PostgreSQL oder MySQL installiert sind.

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"

Nächste Schritte