Condividi tramite


Eseguire query sui backup usando Azure Resource Graph (ARG)

È possibile eseguire query sulle informazioni sul backup per le risorse di Azure senza costi aggiuntivi usando Azure Resource Graph (ARG). ARG è un servizio di Azure progettato per estendere Gestione delle risorse di Azure. Il suo obiettivo è fornire un'esplorazione efficace ed efficiente delle risorse con la possibilità di eseguire query su larga scala in un dato set di sottoscrizioni. Di seguito sono riportati i vantaggi principali dell'uso di ARG per eseguire query sui metadati di backup:

  • Capacità di eseguire query su risorse su larga scala con filtri, raggruppamenti e ordinamento complessi in base alle proprietà delle risorse.
  • Possibilità di ottenere informazioni in tempo reale sui backup, inclusi i processi di backup in corso.
  • Possibilità di aggiungere dati correlati al backup con informazioni utili sulle risorse di Azure correlate, ad esempio macchine virtuali di Azure e account di archiviazione.

Introduzione

Per iniziare a eseguire query sui backup con ARG, seguire questa procedura:

  1. Cercare Resource Graph Explorer nel portale di Azure. Selezionare lo stesso per essere reindirizzati all'editor di query ARG.

    Cercare un gruppo di risorse di Azure

    Nel riquadro sinistro vengono visualizzate tutte le tabelle (e i relativi schemi associati) disponibili per la query.

    • La tabella RecoveryServicesResources contiene la maggior parte dei record correlati al backup, ad esempio i dettagli del processo, i dettagli dell'istanza di backup. e così via
    • La tabella Risorse contiene informazioni su tutte le risorse di Azure di primo livello, ad esempio insiemi di credenziali di Servizi di ripristino, Macchine virtuali di Azure, Account di archiviazione e così via.

    Tabelle disponibili e schemi associati per la query

  2. Per esplorare i dati in una di queste tabelle, scrivere le query Kusto nell'editor di query e fare clic su Esegui query.

    È possibile scaricare l'output di queste query come CSV da Resource Graph Explorer. È inoltre possibile usare queste query in automazione personalizzata usando qualsiasi client di automazione supportato da ARG, ad esempio PowerShell, l’interfaccia della riga di comando o l’SDK. È possibile creare anche cartelle di lavoro personalizzate nel portale di Azure usando ARG come origine dati.

Nota

  • I processi di backup/ripristino fino a 14 giorni sono disponibili in ARG per la query. Per eseguire query sui record cronologici, è consigliabile usare i log Monitoraggio di Azure.
  • ARG consente di eseguire query sulle risorse per le quali si dispone dei diritti di controllo degli accessi in base al ruolo appropriati.

Query di esempio

Di seguito sono riportate alcune query ARG di esempio sui dati di backup che è possibile usare in dashboard e automazioni personalizzati.

Elencare tutte le macchine virtuali di Azure configurate per il backup

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

Elencare tutti i processi di backup nei server Database di Azure per PostgreSQL nell'ultima settimana

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

Elencare tutte le macchine virtuali di Azure che non sono state configurate per il backup

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

Elenca tutti i criteri di backup usati per macchine virtuali di 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'

Elencare tutte le macchine virtuali associate a un criterio di backup specifico

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

Elencare tutti i criteri di backup usati per i server Database di Azure per 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'))

Passaggi successivi

Ulteriori informazioni su Azure Resource Graph