Wykonywanie zapytań dotyczących kopii zapasowych przy użyciu usługi Azure Resource Graph (ARG)

Możesz wykonywać zapytania dotyczące kopii zapasowej zasobów platformy Azure bez dodatkowych kosztów przy użyciu usługi Azure Resource Graph (ARG). ARG to usługa platformy Azure przeznaczona do rozszerzania usługi Azure Resource Management. Ma ona na celu zapewnienie wydajnej eksploracji zasobów z możliwością wykonywania zapytań na dużą skalę w danym zestawie subskrypcji. Poniżej przedstawiono najważniejsze korzyści wynikające z używania usługi ARG do wykonywania zapytań dotyczących metadanych kopii zapasowej:

  • Możliwości wykonywania zapytań o zasoby na dużą skalę dzięki złożonemu filtrowaniu, grupowaniu i sortowaniu według właściwości zasobów.
  • Możliwość uzyskiwania informacji w czasie rzeczywistym dotyczących kopii zapasowych, w tym zadań tworzenia kopii zapasowych w toku.
  • Możliwość dołączania danych związanych z tworzeniem kopii zapasowych przy użyciu przydatnych informacji na temat powiązanych zasobów platformy Azure, takich jak azure Virtual Machines i konta magazynu.

Wprowadzenie

Aby rozpocząć wykonywanie zapytań dotyczących kopii zapasowych przy użyciu usługi ARG, wykonaj następujące kroki:

  1. Wyszukaj pozycję Resource Graph Explorer w Azure Portal. Wybierz to samo, aby przekierować do edytora zapytań usługi ARG.

    Wyszukaj grupę zasobów platformy Azure

    W okienku po lewej stronie są wyświetlane wszystkie tabele (i skojarzone ze nimi schematy), które są dostępne dla zapytań.

    • Tabela RecoveryServicesResources zawiera większość rekordów związanych z kopią zapasową, takich jak szczegóły zadania, szczegóły wystąpienia kopii zapasowej. i tak dalej.
    • Tabela Resources zawiera informacje dotyczące wszystkich zasobów platformy Azure najwyższego poziomu, takich jak magazyny usługi Recovery Services, usługa Azure Virtual Machines, konta magazynu itd.

    Dostępne tabele i skojarzone schematy dla zapytań

  2. Aby eksplorować dane w dowolnej z tych tabel, napisz zapytania Kusto w edytorze zapytań i kliknij przycisk Uruchom zapytanie.

    Dane wyjściowe tych zapytań można pobrać jako plik CSV z eksploratora Resource Graph. Możesz również użyć tych zapytań w niestandardowej automatyzacji przy użyciu dowolnych klientów automatyzacji obsługiwanych przez usługę ARG, takich jak program PowerShell, interfejs wiersza polecenia lub zestaw SDK. Możesz również tworzyć niestandardowe skoroszyty w Azure Portal przy użyciu usługi ARG jako źródła danych.

Uwaga

  • Zadania tworzenia kopii zapasowej/przywracania, które mają maksymalnie 14 dni, są dostępne w usłudze ARG na potrzeby wykonywania zapytań. Jeśli chcesz wykonywać zapytania dotyczące rekordów historycznych, zalecamy użycie dzienników usługi Azure Monitor.
  • Usługa ARG umożliwia wykonywanie zapytań dotyczących zasobów, dla których masz odpowiednie prawa RBAC.

Przykładowe zapytania

Poniżej przedstawiono przykładowe zapytania ARG dotyczące danych kopii zapasowej, których można używać w niestandardowych pulpitach nawigacyjnych i automatyzacjach.

Wyświetlanie listy wszystkich maszyn wirtualnych platformy Azure skonfigurowanych do tworzenia kopii zapasowych

RecoveryServicesResources 
| where type in~ ('Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems')
| extend vaultName = case(type =~ 'microsoft.dataprotection/backupVaults/backupInstances',split(split(id, '/Microsoft.DataProtection/backupVaults/')[1],'/')[0],type =~ 'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems',split(split(id, '/Microsoft.RecoveryServices/vaults/')[1],'/')[0],'--')
| extend dataSourceType = case(type=~'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems',properties.backupManagementType,type =~ 'microsoft.dataprotection/backupVaults/backupInstances',properties.dataSourceSetInfo.datasourceType,'--')
| extend friendlyName = properties.friendlyName
| extend dsResourceGroup = split(split(properties.dataSourceInfo.resourceID, '/resourceGroups/')[1],'/')[0]
| extend dsSubscription = split(split(properties.dataSourceInfo.resourceID, '/subscriptions/')[1],'/')[0]
| extend lastRestorePoint = properties.lastRecoveryPoint
| extend primaryLocation = properties.dataSourceInfo.resourceLocation
| extend policyName = case(type =~ 'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems',properties.policyName, type =~ 'microsoft.dataprotection/backupVaults/backupInstances', properties.policyInfo.name, '--')
| extend protectionState = properties.currentProtectionState
| where protectionState in~ ('ConfiguringProtection','ProtectionConfigured','ConfiguringProtectionFailed','ProtectionStopped','SoftDeleted','ProtectionError')

Wyświetlanie listy wszystkich zadań tworzenia kopii zapasowych na serwerach usługi Azure Databases for PostgreSQL w ciągu ostatniego tygodnia

RecoveryServicesResources 
| where type in~ ('Microsoft.DataProtection/backupVaults/backupJobs')
| extend vaultName = case(type =~ 'microsoft.dataprotection/backupVaults/backupJobs',properties.vaultName,type =~ 'Microsoft.RecoveryServices/vaults/backupJobs',split(split(id, '/Microsoft.RecoveryServices/vaults/')[1],'/')[0],'--')
| extend friendlyName = case(type =~ 'microsoft.dataprotection/backupVaults/backupJobs',strcat(properties.dataSourceSetName , '/', properties.dataSourceName),type =~ 'Microsoft.RecoveryServices/vaults/backupJobs', properties.entityFriendlyName, '--')
| extend dataSourceType = case(type =~ 'Microsoft.RecoveryServices/vaults/backupJobs',properties.backupManagementType,type =~ 'microsoft.dataprotection/backupVaults/backupJobs',properties.dataSourceType,'--')
| extend backupInstanceName = properties.backupInstanceId
| extend dsResourceGroup = split(split(properties.dataSourceId, '/resourceGroups/')[1],'/')[0]| extend dsSubscription = split(split(properties.dataSourceId, '/subscriptions/')[1],'/')[0]
| extend status = properties.status
| extend dataSourceId = properties.dataSourceId
| extend primaryLocation = properties.dataSourceLocation
| extend jobStatus = case (properties.status == 'Completed' or properties.status == 'CompletedWithWarnings','Succeeded',properties.status == 'Failed','Failed',properties.status == 'InProgress', 'Started', properties.status), operation = case(type =~ 'microsoft.dataprotection/backupVaults/backupJobs' and tolower(properties.operationCategory) =~ 'backup' and properties.isUserTriggered == 'true',strcat('adhoc',properties.operationCategory),type =~ 'microsoft.dataprotection/backupVaults/backupJobs', tolower(properties.operationCategory), type =~ 'Microsoft.RecoveryServices/vaults/backupJobs' and tolower(properties.operation) =~ 'backup' and properties.isUserTriggered == 'true',strcat('adhoc',properties.operation),type =~ 'Microsoft.RecoveryServices/vaults/backupJobs',tolower(properties.operation), '--'),startTime = todatetime(properties.startTime),endTime = properties.endTime, duration = properties.duration
| project id, name, friendlyName, resourceGroup, vaultName, dataSourceType, operation, jobStatus, startTime, duration, backupInstanceName, dsResourceGroup, dsSubscription, status, primaryLocation, dataSourceId
| where (startTime >= ago(7d))

Wyświetlanie listy wszystkich maszyn wirtualnych platformy Azure, które nie zostały skonfigurowane do tworzenia kopii zapasowych

Resources
| where type in~ ('microsoft.compute/virtualmachines','microsoft.classiccompute/virtualmachines') 
| extend resourceId=tolower(id) 
| join kind = leftouter ( RecoveryServicesResources
| where type == "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems"
| where properties.backupManagementType == "AzureIaasVM"
| project resourceId = tolower(tostring(properties.sourceResourceId)), backupItemid = id, isBackedUp = isnotempty(id) ) on resourceId 
| extend isProtected = isnotempty(backupItemid)
| where (isProtected == (0))
| project id,name,resourceGroup,location,tags

Wyświetlanie listy wszystkich zasad tworzenia kopii zapasowych używanych dla maszyn wirtualnych platformy Azure

RecoveryServicesResources
| where type == 'microsoft.recoveryservices/vaults/backuppolicies'
| extend vaultName = case(type == 'microsoft.recoveryservices/vaults/backuppolicies', split(split(id, 'microsoft.recoveryservices/vaults/')[1],'/')[0],type == 'microsoft.recoveryservices/vaults/backuppolicies', split(split(id, 'microsoft.recoveryservices/vaults/')[1],'/')[0],'--')
| extend datasourceType = case(type == 'microsoft.recoveryservices/vaults/backuppolicies', properties.backupManagementType,type == 'microsoft.dataprotection/backupVaults/backupPolicies',properties.datasourceTypes[0],'--')
| project id,name,vaultName,resourceGroup,properties,datasourceType
| where datasourceType == 'AzureIaasVM'

Wyświetlanie listy wszystkich maszyn wirtualnych skojarzonych z określonymi zasadami tworzenia kopii zapasowych

RecoveryServicesResources
| where type == "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems"
| project propertiesJSON = parse_json(properties)
| where propertiesJSON.backupManagementType == "AzureIaasVM"
| project VMID=propertiesJSON.sourceResourceId, PolicyID=propertiesJSON.policyId
| where PolicyID == "<ARM ID of the given policy>"

Wyświetlanie listy wszystkich zasad tworzenia kopii zapasowych używanych dla serwerów usługi Azure Databases for PostgreSQL

RecoveryServicesResources 
| where type in~ ('Microsoft.DataProtection/BackupVaults/backupPolicies')
| extend vaultName = case(type =~ 'microsoft.dataprotection/backupVaults/backupPolicies', split(split(id, '/Microsoft.DataProtection/backupVaults/')[1],'/')[0],type =~ 'microsoft.recoveryservices/vaults/backupPolicies', split(split(id, '/Microsoft.RecoveryServices/vaults/')[1],'/')[0],'--')
| extend datasourceType = case(type =~ 'Microsoft.RecoveryServices/vaults/backupPolicies', properties.backupManagementType,type =~ 'microsoft.dataprotection/backupVaults/backupPolicies',properties.datasourceTypes[0],'--')
| project id,name,vaultName,resourceGroup,properties,datasourceType
| where (datasourceType in~ ('Microsoft.DBforPostgreSQL/servers/databases'))

Następne kroki

Dowiedz się więcej o usłudze Azure Resource Graph