Delen via


Azure Resource Graph-voorbeeldquery's voor servers met Azure Arc

Azure Resource Graph is een Azure-service waarmee u query's op schaal kunt uitvoeren, zodat u uw omgeving effectief kunt beheren. U maakt query's met behulp van Kusto Query Language (KQL). Zie Inzicht in de Azure Resource Graph-querytaal voor meer informatie.

Dit artikel bevat een lijst met azure Resource Graph-voorbeeldquery's voor servers met Azure Arc. Deze query's richten zich op het microsoft.hybridcompute/machines resourcetype en retourneren informatie zoals domeinlidmaatschap, geïnstalleerde extensies, agentversies en besturingssysteemdetails. U kunt deze query's uitvoeren via Azure PowerShell of Azure CLI, of in Azure Portal met behulp van Resource Graph Explorer. Pas de queries aan uw behoeften aan.

Hint

U kunt Microsoft Copilot in Azure gebruiken om Azure Resource Graph-query's te maken met behulp van natuurlijke taal. Zie voor meer informatie Resourcegegevens ophalen met behulp van Microsoft Copilot in Azure.

Voorbeeldvragen

Verkrijg het aantal en percentage van Arc-ingeschakelde servers per domein

Deze query vat de domainName eigenschap samen op Azure Arc-enabled servers en gebruikt een berekening met bin om een Pct kolom te maken voor het percentage van Arc-enabled servers per domein.

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

"Overzicht alle extensies die op een Azure Arc-ingeschakelde server zijn geïnstalleerd"

Eerst gebruikt deze query project op het hybride machineresourcetype om de ID in hoofdletters te krijgen (toupper()), de computernaam op te halen en het besturingssysteem dat op de machine draait te bepalen. Het verkrijgen van de resource-ID in hoofdletters is een goede manier om je voor te bereiden op join naar een andere eigenschap. Vervolgens gebruikt de query join met kind als leftouter om extensies te verkrijgen door een hoofdletter substring van het extensie-ID te matchen. Het gedeelte van de ID vóór /extensions/<ExtensionName> heeft hetzelfde formaat als de hybride machine-ID, dus gebruiken we deze eigenschap voor de join. summarize wordt vervolgens gebruikt samen met make_list op de naam van de virtuele machine-extensie om de naam van elke extensie te combineren waarbij ID, OSName, en ComputerName hetzelfde zijn in een enkele array-eigenschap. Ten slotte sorteren we op kleine letters OSName met asc. Standaard is order by aflopend.

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"

Lijst met servers met Arc waarop de meest recente versie van de agent niet wordt uitgevoerd

Met deze query worden alle servers met Arc geretourneerd waarop een verouderde versie van de Connected Machine-agent wordt uitgevoerd. Agenten met de status Verlopen worden uitgesloten van de resultaten. De query gebruikt leftouterjoin om de Advisor-aanbevelingen samen te voegen die zijn gegenereerd over verbonden machineagents die zijn geïdentificeerd als verouderd, en hybride computers om alle agents te filteren die gedurende een bepaalde periode niet met Azure hebben gecommuniceerd.

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"

Servers met Arc weergeven waarop SQL Server, PostgreSQL of MySQL is geïnstalleerd

Deze query retourneert alle Arc-ingeschakelde servers waarop SQL Server, PostgreSQL of MySQL is geïnstalleerd.

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"

Volgende stappen