مشاركة عبر


الاستعلام عن النسخ الاحتياطية باستخدام Azure Resource Graph (ARG)

توضح هذه المقالة كيفية الاستعلام عن معلومات النسخ الاحتياطي لموارد Azure باستخدام Azure Resource Graph (ARG) دون أي تكلفة إضافية. توسع ARG إدارة موارد Azure وتسمح لك باستكشاف الموارد بكفاءة وعلى نطاق واسع عبر اشتراكات متعددة.

الفوائد الرئيسية لاستخدام Azure Resource Graph لبيانات تعريف النسخ الاحتياطي

الفوائد الرئيسية لاستخدام ARG للاستعلام عن بيانات تعريف النسخ الاحتياطي هي:

  • الاستعلام عن الموارد عبر الاشتراكات باستخدام التصفية المتقدمة والتكوين والفرز حسب خصائص المورد.
  • الوصول إلى تفاصيل النسخ الاحتياطي في الوقت الحقيقي، بما في ذلك مهام النسخ الاحتياطي النشطة.
  • اجمع بيانات النسخ الاحتياطي مع معلومات موارد Azure ذات الصلة، مثل الأجهزة الظاهرية وحسابات التخزين.

Getting started

للبدء في الاستعلام عن النسخ الاحتياطية باستخدام ARG، اتبع الخطوات التالية:

  1. البحث عن مستكشف Resource Graph في مدخل Azure. حدد نفس الخيار لإعادة توجيهه إلى محرر استعلام ARG.

    البحث في مجموعة موارد Azure

    يعرض الجزء الأيسر جميع الجداول (ومخططاتها المقترنة) المتوفرة للاستعلام.

    • The RecoveryServicesResources table contains most of the backup-related records, such as job details, backup instance details. وما إلى غير ذلك.
    • The Resources table contains information on all top-level Azure Resources, such as Recovery Services vaults, Azure Virtual Machines, Storage Accounts, and so on.

    الجداول المتوفرة والمخططات المقترنة للاستعلام

  2. To explore the data in any of these tables, write Kusto queries in the query editor and click Run Query.

    يمكنك تحميل الإخراج من هذه الاستعلامات كـ CSV من مستكشف Resource Graph. You can also use these queries in custom automation using any automation clients supported by ARG, such as PowerShell, CLI, or SDK. You can also create custom workbooks in the Azure portal using ARG as a data source.

Note

  • تتوفر مهام النسخ الاحتياطي/الاستعادة التي يصل عمرها إلى 14 يوماً في ARG للاستعلام. إذا كنت ترغب في الاستعلام عن السجلات التاريخية، نوصيك باستخدام سجلات مراقبة Azure.
  • يسمح لك ARG بالاستعلام عن الموارد التي لديك حقوق RBAC المناسبة لها.

Sample queries

فيما يلي بعض نماذج استعلامات ARG على بيانات النسخ الاحتياطي التي يمكنك استخدامها في لوحات المعلومات المخصصة والأتمتة.

سرد جميع الأجهزة الظاهرية لـ Azure والتي تم تكوينها للنسخ الاحتياطي

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

سرد جميع مهام النسخ الاحتياطي على قواعد بيانات Azure لخوادم PostgreSQL في الأسبوع الأخير

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

سرد جميع الأجهزة الظاهرية لـ Azure والتي تم تكوينها للنسخ الاحتياطي

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

سرد جميع نُهج النسخ الاحتياطي المستخدمة للأجهزة الظاهرية 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'

سرد جميع الأجهزة الظاهرية المقترنة بنهج النسخ احتياطي المعين

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

سرد جميع نُهج النسخ الاحتياطي المستخدمة لقواعد بيانات Azure لخوادم 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'))

Next steps

تعرف على المزيد حول Azure Resource Graph