本文協助您透過成本管理的匯出功能定期匯出大量資料。 建議使用匯出方式來取得未經彙總的成本資料。 特別是當使用量檔案太大,而無法使用成本詳細資料 API 可靠地進行呼叫和下載時。 匯出的資料會放在您選擇的 Azure 儲存體帳戶中。 您可以將資料從該位置載入到您自己的系統中,並視需要加以分析。 若要在 Azure 入口網站中設定匯出功能,請參閱匯出資料。
如果您想要將各種範圍的匯出自動化,下一節中的範例 API 要求是很好的起點。 您可以使用匯出 API 來將自動匯出建立為一般環境設定的一部分。 自動匯出有助於確保您擁有所需的資料。 當您擴充 Azure 使用量時,則可以在自己的組織系統中使用。
一般匯出設定
在建立第一個匯出之前,請考慮您的案例以及為了實現此案例所需要的設定選項。 請考慮下列匯出選項:
- 週期 - 決定匯出作業的執行頻率,以及何時要將檔案放在您的 Azure 儲存體帳戶中。 可選擇 [每天]、[每週] 和 [每月]。 請嘗試設定您的週期,使其符合貴組織內部系統所使用的資料匯入作業。
- 重複週期 - 決定匯出的有效時間長度。 檔案只會在重複發生期間匯出。
- 時間範圍 - 決定在指定執行時匯出所產生的數據量。 常見的選項為 MonthToDate 和 WeekToDate。
- 開始日期 - 設定您想要的匯出排程開始時間。 系統會在 StartDate 建立匯出,之後再根據您的 Recurrence 建立匯出。
-
類型 - 有三種匯出類型:
- ActualCost - 顯示指定期間所產生的總使用量和成本,並在帳單上顯示。
- AmortizedCost - 顯示指定期間的總使用量和成本,並將攤銷應用於相關的預留購買成本。
- 使用量 - 在 2020 年 7 月 20 日之前建立的匯出全都是「使用量」類型。 將所有排定的匯出更新為 ActualCost 或 AmortizedCost。
- 資料行 - 定義您想要包含在匯出檔案中的資料欄位。 這些欄位對應到 Cost Details API 中提供的欄位。
- 資料分割 - 如果您有大型資料集,而且想將其分成多個檔案,請將選項設定為 true。 它可讓數據擷取更快且更容易。 如需關於資料分割的詳細資訊,請參閱大型資料集的檔案分割。
建立訂用帳戶的每日月初至今匯出
要求 URL:PUT https://management.azure.com/{scope}/providers/Microsoft.CostManagement/exports/{exportName}?api-version=2020-06-01
{
"properties": {
"schedule": {
"status": "Active",
"recurrence": "Daily",
"recurrencePeriod": {
"from": "2020-06-01T00:00:00Z",
"to": "2020-10-31T00:00:00Z"
}
},
"format": "Csv",
"deliveryInfo": {
"destination": {
"resourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MYDEVTESTRG/providers/Microsoft.Storage/storageAccounts/{yourStorageAccount} ",
"container": "{yourContainer}",
"rootFolderPath": "{yourDirectory}"
}
},
"definition": {
"type": "ActualCost",
"timeframe": "MonthToDate",
"dataSet": {
"granularity": "Daily",
"configuration": {
"columns": [
"Date",
"MeterId",
"ResourceId",
"ResourceLocation",
"Quantity"
]
}
}
}
}
複製大型 Azure 儲存體 Blob
您可以使用 Cost Management,將 Azure 使用量詳細資料排定匯出為 Blob,存入您的 Azure 儲存體帳戶。 產生的 Blob 大小可能超過 GB。 Cost Management 團隊與 Azure 儲存體團隊合作,測試複製大型 Azure 儲存體 Blob。 結果記載於以下區段中。 當您將儲存體 Blob 從一個 Azure 區域複製到另一個區域時,可能會有類似的結果。
小組進行效能測試,方法是將位於美國西部區域的儲存體帳戶內的 Blob 傳輸到相同區域及其他區域。 團隊測得的速度範圍,從相同區域每秒 2 GB,到位於東南亞區域儲存體帳戶的每秒 150 MB 不等。
測試組態
為了測量 Blob 傳輸速率,小組建立了簡單的 .NET 主控台應用程式,以透過 NuGet 參考最新版 (v2.0.1) Azure 資料移動程式庫 (DLM)。 DLM 是由 Azure 儲存體小組提供的 SDK,可讓您以程式設計方式存取其傳輸服務。 然後,他們會在多個區域中建立標準 V2 儲存體帳戶,並使用美國西部作為來源區域。 他們在當地的儲存體帳戶中填入容器,每個容器各自保存 10 個 2 GB 的區塊 Blob。 他們會使用 DLM 的 TransferManager.CopyDirectoryAsync() 方法搭配 CopyMethod.ServiceSideSyncCopy 選項,將容器複製到其他儲存體帳戶。 測試是在以 12 個核心和 1 GbE 網路執行 Windows 10 的電腦上執行。
使用的應用程式設定:
- TransferManager.Configurations.ParallelOperations = Environment.ProcessorCount * 32. 小組發現設定對整體輸送量的影響最大。 核心數目的 32 倍值提供了最佳的吞吐量給測試用戶端。
- ServicePointManager.DefaultConnectionLimit = int.MaxValue。 將它設定為最大值,實際上會將傳輸平行處理原則的完整控制權傳遞至 先前所述的 ParallelOperations 設定。
- TransferManager.Configurations.BlockSize = 4,194,304。 這對於使用 4 MB 的傳輸速率有一些影響,並證明這是最適合測試的設定。
如需詳細資訊和範例程式代碼,請參閱相關內容一節中的連結。
測試結果
| 測試編號 | 目標區域 | Blobs | 時間 (秒) | MB/s | 註解 |
|---|---|---|---|---|---|
| 1 | WestUS | 2 GB x 10 | 10 | 2,000 | |
| 2 | WestUS2 | 2 GB x 10 | 33 | 600 | |
| 3 | 美國東部 (EastUS) | 2 GB x 10 | 67 | 300 | |
| 4 | EastUS | 2 GB x 10 x 4 | 99 | 200 | 使用 8 個儲存體帳戶進行 4 個平行傳輸:4 個西部到 4 個東部,每次傳輸的平均值 |
| 6 | EastUS | 2 GB x 10 x 4 | 92 | 870 | 從一個記憶體帳戶到另一個記憶體帳戶的四個平行傳輸 |
| 5 | EastUS | 2 GB x 10 x 8 | 148 | 135 | 使用八個儲存帳戶進行八次平行傳輸:每次傳輸平均有四個來自西部的帳戶和四個來自東部的帳戶 |
| 7 | 東南亞 | 2 GB x 10 | 133 | 150 | |
| 8 | 東南亞 | 2 GB x 10 x 4 | 444 | 180 | 從一個記憶體帳戶到另一個記憶體帳戶的四個平行傳輸 |
同步傳輸特性
以下是使用 DML 的服務端同步傳輸特性,其中與其使用方式相關的部分:
- DML 可以傳輸單一 Blob 或目錄。 對於目錄傳輸,您可以使用搜尋模式來比對 Blob 首碼。
- 區塊 Blob 傳輸會平行進行。 所有作業都會在傳輸程序結束時完成。 個別 Blob 區塊會平行傳輸。
- 傳輸會在用戶端上以非同步方式執行。 傳輸狀態可透過回呼方法取得,該方法可以在 TransferContext 物件中定義。
- 傳輸會在進度期間建立檢查點,並公開 TransferCheckpoint 物件。 物件代表透過 TransferCoNtext 物件的最新檢查點。 如果在取消/中止傳輸之前儲存 TransferCheckpoint,則最多可以在七天內從檢查點繼續傳輸。 傳輸可以從任何檢查點繼續,而不僅限於最新的檢查點。
- 如果傳輸客戶端進程終止並重新啟動,而不實作檢查點功能:
- 在任何 Blob 傳輸完成之前,傳輸都會重新啟動。
- 在某些 Blob 傳輸完成後,系統只會為未完成的 Blob 重新啟動傳輸。
- 暫停用戶端執行會暫停傳輸。
- Blob 傳輸功能可讓用戶端免受暫時性失敗的影響。 例如,記憶體帳戶節流通常不會造成傳輸失敗,但會降低傳送速率。
- 服務端傳輸對於 CPU 和記憶體、某些網路頻寬和連線具有低用戶端資源使用量。
非同步傳輸特性
您可以叫用 TransferManager.CopyDirectoryAsync() 方法搭配 CopyMethod.ServiceSideAsyncCopy 選項。 其運作方式類似於用戶端觀點的同步傳輸機制,但是作業有下列差異:
- 傳輸速率比對等同步傳輸慢(通常為 10 MB/秒或更少)。
- 即使用戶端程序終止,傳輸仍會繼續。
- 雖然支援檢查點,但使用 TransferCheckpoint 繼續傳輸時,並不會從檢查點繼續,而是從傳輸的目前狀態開始。
測試摘要
Azure Blob 儲存體使用其服務端同步傳輸功能支援高全域傳輸速率。 使用 .NET 應用程式中的功能就是直接使用資料移動程式庫。 Cost Management 匯出能可靠地在不到一小時內,將數百 GB 的資料複製到任何位置的儲存體帳戶。
相關內容
- 請參閱 Microsoft Azure 儲存體資料移動程式庫來源。
- 透過資料移動程式庫傳輸資料。
- 請參閱 AzureDmlBackup 範例應用程式來源範例。
- 請參閱 Azure Blob 儲存體的高輸送量。