Udostępnij przez


Przykładowe zapytania Azure Resource Graph dla serwerów obsługiwanych przez Azure Arc

Azure Resource Graph to usługa platformy Azure, która umożliwia wykonywanie zapytań na dużą skalę, co ułatwia efektywne zarządzanie środowiskiem. Zapytania są tworzone przy użyciu języka Kusto Query Language (KQL). Aby uzyskać więcej informacji, zobacz Omówienie języka zapytań usługi Azure Resource Graph.

Ten artykuł zawiera listę przykładowych zapytań usługi Azure Resource Graph dla serwerów z obsługą usługi Azure Arc. Te zapytania dotyczą microsoft.hybridcompute/machines typu zasobu i zwracają informacje, takie jak członkostwo w domenie, zainstalowane rozszerzenia, wersje agenta i szczegóły systemu operacyjnego. Te zapytania można uruchamiać za pomocą programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure albo w witrynie Azure Portal przy użyciu Eksploratora usługi Resource Graph. Zmodyfikuj zapytania zgodnie z potrzebami.

Wskazówka

Za pomocą rozwiązania Microsoft Copilot na platformie Azure możesz tworzyć zapytania usługi Azure Resource Graph przy użyciu języka naturalnego. Aby uzyskać więcej informacji, zobacz Uzyskiwanie informacji o zasobach przy użyciu rozwiązania Microsoft Copilot na platformie Azure.

Przykładowe zapytania

Pobieranie liczby i wartości procentowych serwerów z obsługą usługi Arc według domeny

To zapytanie podsumowuje domainName właściwość na serwerach z obsługą usługi Azure Arc i używa obliczeń z parametrem bin w celu utworzenia Pct kolumny dla procentu serwerów z obsługą usługi Arc na domenę.

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

Wymień wszystkie rozszerzenia zainstalowane na serwerze z obsługą Azure Arc

Najpierw to zapytanie używa project typu zasobu maszyny hybrydowej, aby uzyskać identyfikator w wielkiej litery (toupper()), uzyskać nazwę komputera i system operacyjny uruchomiony na maszynie. Przygotowanie identyfikatora zasobu do zapisu wielkimi literami jest dobrym sposobem na przygotowanie się do join dla innej własności. Następnie zapytanie używa join z kind jako leftouter, aby uzyskać rozszerzenia poprzez dopasowanie wielkich liter substring identyfikatora rozszerzenia. Część identyfikatora przed /extensions/<ExtensionName> jest tym samym formatem co identyfikator maszyny hybrydowej, dlatego używamy tej właściwości dla elementu join. summarize jest używane wraz z make_list na nazwie rozszerzenia maszyny wirtualnej, aby połączyć nazwę każdego rozszerzenia, gdzie ID, OSName i ComputerName są identyczne, w pojedynczą właściwość tablicy. Na koniec sortujemy według małych liter OSName z asc. Domyślnie order by jest ustawione na malejące.

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"

Lista serwerów Arc, które nie korzystają z najnowszej wydanej wersji agenta

To zapytanie zwraca wszystkie serwery z włączoną opcją Arc, na których działa nieaktualna wersja agenta Connected Machine. Agenci o statusie Wygasło są wykluczeni z wyników. Zapytanie używa leftouterjoin do zestawienia rekomendacji doradcy dotyczących wszelkich agentów maszyn połączonych, które zostały zidentyfikowane jako nieaktualne, oraz maszyn komputerów hybrydowych, aby wyfiltrować dowolnego agenta, który nie komunikował się z platformą Azure przez dłuższy okres czasu.

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"

Wyświetlanie listy serwerów z obsługą usługi Arc z zainstalowanym programem SQL Server, PostgreSQL lub programem MySQL

To zapytanie zwraca wszystkie serwery z obsługą usługi Arc z zainstalowanym programem SQL Server, PostgreSQL lub 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"

Następne kroki