Consultar seus backups usando o Azure Resource Graph (ARG)

Você pode consultar informações no backup para seus recursos do Azure sem custo adicional usando o Azure Resource Graph (ARG). O ARG é um serviço do Azure projetado para estender o Gerenciamento de Recursos do Azure. Ele visa fornecer uma exploração eficiente de recursos com a capacidade de consultar em escala em um determinado conjunto de assinaturas. A seguir estão os principais benefícios do uso do ARG para consultar seus metadados de backup:

  • Capacidade de consultar recursos em escala com filtragem, agrupamento e classificação complexos por propriedades de recurso.
  • Capacidade de obter informações em tempo real sobre seus backups, incluindo trabalhos de backup em andamento.
  • Capacidade de unir dados relacionados ao backup com informações úteis sobre os recursos relacionados do Azure, como Máquinas Virtuais do Microsoft Azure e Contas de Armazenamento.

Introdução

Para começar a consultar seus backups usando o ARG, siga estas etapas:

  1. Pesquise por Explorer do Azure Resource Graph no portal do Azure. Selecione o mesmo para ser redirecionado para o editor de consulta do ARG.

    Pesquisar Grupo de Recursos do Azure

    O painel esquerdo exibe todas as tabelas (e seus esquemas associados) que estão disponíveis para consulta.

    • A tabela RecoveryServicesResources contém a maioria dos registros relacionados ao backup, como detalhes do trabalho, detalhes da instância de backup. e assim por diante.
    • A tabela Resources contém informações sobre todos os recursos do Azure de nível superior, como cofres dos Serviços de Recuperação, Máquinas Virtuais do Microsoft Azure, Contas de Armazenamento e assim por diante.

    Tabelas disponíveis e esquemas associados para consulta

  2. Para explorar os dados em qualquer uma dessas tabelas, grave as consultas do Kusto no editor de consultas e clique em Executar Consulta.

    Você pode fazer o download da saída dessas consultas como CSV no Explorer do Azure Resource Graph. Você também pode usar essas consultas na automação personalizada usando qualquer cliente de automação com suporte do ARG, como PowerShell, CLI ou SDK. Você também pode criar pastas de trabalho personalizadas no portal do Azure usando o ARG como uma fonte de dados.

Observação

  • Trabalhos de Backup/Restauração de até 14 dias estão disponíveis no ARG para consulta. Se você quiser consultar registros históricos, recomendamos usar Logs do Azure Monitor.
  • O ARG permite que você consulte os recursos para os quais você tem os direitos de RBAC apropriados.

Consultas de exemplo

A seguir estão algumas consultas do ARG de amostra em seus dados de backup que você pode usar em painéis e automações personalizados.

Listar todas as VMs do Azure que foram configuradas para 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')

Listar todos os trabalhos de backup nos Servidores do Bancos de Dados do Azure para PostgreSQL na última semana

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

Listar todas as VMs do Azure que não foram configuradas para 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

Listar todas as políticas de Backup usadas para VMs do 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'

Listar todas as VMs associadas a uma determinada política de backup

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

Listar todas as políticas de Backup usadas para Servidores do Bancos de Dados do Azure para 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'))

Próximas etapas

Saiba mais sobre o Azure Resource Graph