Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Cet article explique comment interroger des informations de sauvegarde pour vos ressources Azure à l’aide d’Azure Resource Graph (ARG) sans coût supplémentaire. ARG étend Azure Resource Management et vous permet d’explorer les ressources efficacement et à grande échelle sur plusieurs abonnements.
Principaux avantages de l’utilisation d’Azure Resource Graph pour les métadonnées de sauvegarde
Les principaux avantages de l’utilisation d’ARG pour interroger vos métadonnées de sauvegarde sont les suivants :
- Interrogez les ressources entre les abonnements avec un filtrage avancé, un regroupement et un tri par propriétés de ressource.
- Accédez aux détails de sauvegarde en temps réel, y compris les travaux de sauvegarde actifs.
- Combinez les données de sauvegarde avec les informations de ressources Azure associées, telles que les machines virtuelles et les comptes de stockage.
Prise en main
Pour commencer à interroger vos sauvegardes à l’aide du service ARG, procédez comme suit :
Recherchez l’Explorateur Resource Graph dans le portail Azure. Sélectionnez-le pour être redirigé vers l’éditeur de requête ARG.
Le volet gauche affiche toutes les tables (et leurs schémas associés) pouvant être interrogés.
- La table RecoveryServicesResources contient la plupart des enregistrements liés à la sauvegarde, comme les détails de la tâche et de l’instance de sauvegarde. Et ainsi de suite.
- La table Ressources contient des informations sur toutes les ressources Azure de niveau supérieur, comme les coffres Recovery Services, les machines virtuelles Azure, les comptes de stockage, etc.
Pour explorer les données de l’une de ces tables, écrivez des requêtes Kusto dans l’éditeur de requête et cliquez sur Exécuter la requête.
Vous pouvez télécharger la sortie de ces requêtes au format CSV à partir de l’Explorateur Resource Graph. Vous pouvez également utiliser ces requêtes dans le service personnalisé Automation à l’aide de n’importe quel client Automation pris en charge par ARG, comme PowerShell, l’interface CLI ou le kit SDK. Vous pouvez également créer des classeurs personnalisés dans le portail Azure à l’aide d’ARG comme source de données.
Notes
- Les travaux de sauvegarde/restauration des 14 derniers jours sont disponibles et peuvent être interrogés dans ARG. Si vous souhaitez interroger des enregistrements historiques, nous vous recommandons d’utiliser les Journaux Azure Monitor.
- ARG vous permet d’interroger les ressources pour lesquelles vous disposez des droits RBAC appropriés.
Exemples de requêtes
Voici quelques exemples de requêtes ARG sur vos données de sauvegarde que vous pouvez utiliser dans les automatisations et tableaux de bord personnalisés.
Répertorier toutes les machines virtuelles Azure configurées pour la sauvegarde
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')
Répertorier toutes les tâches de sauvegarde sur les serveurs Azure Database pour PostgreSQL au cours de la dernière semaine
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))
Répertorier toutes les machines virtuelles Azure qui ne sont pas configurées pour la sauvegarde
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
Liste de toutes les stratégies de sauvegarde utilisées pour les machines virtuelles 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'
Répertorier toutes les machines virtuelles associées à une stratégie de sauvegarde donnée
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>"
Répertorier toutes les stratégies de sauvegarde utilisées pour les serveurs Azure Database pour 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'))