本文概述已實證的 FinOps 作法集合,適用於記憶體服務。 其提供將成本優化、提高效率,以及使用 Azure Resource Graph (ARG) 查詢以深入瞭解記憶體資源的策略。 遵循這些做法,您可以確定您的記憶體服務符合成本效益,並符合貴組織的財務目標。
備份
下列各節提供備份服務的 ARG 查詢。 這些查詢可協助您深入瞭解備份資源,並確保它們已使用適當的設定進行設定。 藉由分析備份專案和識別閑置備份,您可以將備份服務優化,以達到成本效益。
查詢:閑置備份
此 ARG 查詢會分析 Azure 復原服務保存庫中的備份專案,並識別未備份超過 90 天的任何備份專案。
類別
最佳化
查詢
recoveryservicesresources
| where type =~ 'microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems'
| extend vaultId = tostring(properties.vaultId)
| extend resourceId = tostring(properties.sourceResourceId)
| extend idleBackup= datetime_diff('day', now(), todatetime(properties.lastBackupTime)) > 90
| extend resourceType=tostring(properties.workloadType)
| extend protectionState=tostring(properties.protectionState)
| extend lastBackupTime=tostring(properties.lastBackupTime)
| extend resourceGroup=strcat('/subscriptions/',subscriptionId,'/resourceGroups/',resourceGroup)
| extend lastBackupDate=todatetime(properties.lastBackupTime)
| where idleBackup != 0
| project resourceId,vaultId,idleBackup,lastBackupDate,resourceType,protectionState,lastBackupTime,location,resourceGroup,subscriptionId
檢索:列出復原服務保存庫 (Recovery Services Vaults)
此 Azure Resource Graph (ARG) 查詢會擷取 Azure 復原服務保存庫的詳細數據。 此查詢也包含 SKU 層、備援設定和其他相關元數據的相關信息。
類別
最佳化
查詢
resources
| where type == 'microsoft.recoveryservices/vaults'
| where resourceGroup in ({ResourceGroup})
| extend skuTier = tostring(sku['tier'])
| extend skuName = tostring(sku['name'])
| extend resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| extend redundancySettings = tostring(properties.redundancySettings['standardTierStorageRedundancy'])
| order by id asc
| project id, redundancySettings, resourceGroup, location, subscriptionId, skuTier, skuName
磁碟
Azure 管理磁碟是由 Azure 管理並搭配虛擬機使用的區塊層級儲存磁碟區。 管理磁碟為您的虛擬機工作負載提供高可用性、可擴展性與安全性。
相關資源:
移除未連接的磁碟
建議:移除或降級未連接的管理磁碟,以避免不必要的儲存成本。
關於未連接磁碟
當虛擬機被刪除時,其相關的管理磁碟可能不會自動被刪除。 這些未連接(孤立)磁碟會根據磁碟類型和大小持續產生儲存成本。 查詢排除處於主動 SAS 傳輸模式或 Azure Site Recovery 複本或種子磁碟的磁碟,因為這些磁碟預期會暫時脫離連接。
識別未連結的磁碟
請使用以下 ARG 查詢來識別未掛接的管理磁碟。
resources
| where type =~ 'microsoft.compute/disks' and managedBy == ""
| extend diskState = tostring(properties.diskState)
| where managedBy == ""
and diskState != 'ActiveSAS'
and tags !contains 'ASR-ReplicaDisk'
and tags !contains 'asrseeddisk'
| extend DiskId=id, DiskIDfull=id, DiskName=name, SKUName=sku.name, SKUTier=sku.tier, DiskSizeGB=tostring(properties.diskSizeGB), Location=location, TimeCreated=tostring(properties.timeCreated), SubId=subscriptionId
| order by DiskId asc
| project DiskId, DiskIDfull, DiskName, DiskSizeGB, SKUName, SKUTier, resourceGroup, Location, TimeCreated, subscriptionId
查詢:磁碟快照副本超過30天
此 ARG 查詢會識別超過 30 天的磁碟快照集。
類別
最佳化
查詢
resources
| where type == 'microsoft.compute/snapshots'
| extend TimeCreated = properties.timeCreated
| extend resourceGroup = strcat("/subscriptions/",subscriptionId,"/resourceGroups/",resourceGroup)
| where TimeCreated < ago(30d)
| order by id asc
| project id, resourceGroup, location, TimeCreated, subscriptionId
降級高級快照
建議:管理磁碟快照使用標準儲存,取代高級儲存,以降低儲存成本。
關於高級快照
儲存在高級儲存空間的管理磁碟快照成本高於標準儲存。 在大多數情況下,快照不需要高級儲存的效能,因為它們用於備份和復原,而非主動輸入輸出。 降級為標準儲存可大幅降低快照成本,且不影響其功能。
識別高級快照
請使用以下 ARG 查詢來辨識使用高級儲存裝置的受管磁碟快照。
resources
| where type == 'microsoft.compute/snapshots'
| extend
StorageSku = tostring(sku.tier),
resourceGroup = strcat('/subscriptions/',subscriptionId,'/resourceGroups/',resourceGroup),
diskSize = tostring(properties.diskSizeGB)
| where StorageSku == "Premium"
| project id, name, StorageSku, diskSize, location, resourceGroup, subscriptionId
儲存體帳戶
Azure 儲存體 帳號會在 Azure 中為你的資料提供獨特的命名空間。 儲存帳號經歷了多代演變,使用舊有帳號類型可能會限制使用新功能與優化的存取。
相關資源:
升級舊有儲存帳號
建議:將使用 GPv1 或 BlobStorage 類型的儲存帳號升級到 GPv2,以獲得更好的價格層級、功能並持續支援。
關於舊有儲存帳號
使用 GPv1 或 BlobStorage 類型的儲存帳號不支援最新的 Azure 儲存體 功能,例如區塊 blob 的存取層級、生命週期管理政策和不可變性政策。 GPv2 儲存帳號提供相同功能外加額外功能,價格具競爭力或更低。 Microsoft 建議將所有 GPv1 和 BlobStorage 帳號升級到 GPv2。
識別舊有儲存帳戶
請使用以下 ARG 查詢,找出仍在使用 GPv1 或 BlobStorage 類型的儲存帳號。
resources
| where type =~ 'Microsoft.Storage/StorageAccounts'
and kind !='StorageV2'
and kind !='FileStorage'
| extend
StorageAccountName = name,
SAKind = kind,
AccessTier = tostring(properties.accessTier),
SKUName = sku.name,
SKUTier = sku.tier,
Location = location
| order by id asc
| project
id,
StorageAccountName,
SKUName,
SKUTier,
SAKind,
AccessTier,
resourceGroup,
Location,
subscriptionId
提供意見反應
請寫下您的快速評價,讓我們知道我們的表現如何。 我們會使用這些評論來改善及擴充 FinOps 工具和資源。
如果您要尋找特定專案,請投票給現有專案或建立新想法。 與其他人分享想法,以獲得更多的選票。 我們專注於擁有最多選票的想法。
相關內容
相關資源:
相關解決方案: