使用匯出功能重複擷取大型成本資料集
本文協助您從成本管理透過匯出來定期匯出大量資料。 建議您使用匯出來擷取未彙總成本資料。 特別是當使用量檔案太大,而無法使用成本詳細資料 API 可靠地進行呼叫和下載時。 匯出的資料會放在您選擇的 Azure 儲存體帳戶中。 您可以將資料從該位置載入到您自己的系統中,並視需要加以分析。 若要在 Azure 入口網站中設定匯出功能,請參閱匯出資料。
如果您想要將各種範圍的匯出自動化,下一節中的範例 API 要求是很好的起點。 您可以使用匯出 API 來將自動匯出建立為一般環境設定的一部分。 自動匯出有助於確保您擁有所需的資料。 當您擴充 Azure 使用量時,則可以在自己的組織系統中使用。
一般匯出設定
在建立第一個匯出之前,請考慮您的案例以及為了實現此案例所需要的設定選項。 請考慮下列匯出選項:
- 週期 - 決定匯出作業的執行頻率,以及何時要將檔案放在您的 Azure 儲存體帳戶中。 可選擇 [每天]、[每週] 和 [每月]。 請嘗試設定您的週期,使其符合貴組織內部系統所使用的資料匯入作業。
- 週期期間 - 決定匯出保持有效的時間長度。 檔案只會在週期期間內匯出。
- 時間範圍 - 決定在指定執行時匯出所產生的數據量。 常見的選項為 MonthToDate 和 WeekToDate。
- 開始日期 - 設定您想要的匯出排程開始時間。 系統會根據您的週期,在開始日期和之後的時間建立匯出。
- 類型 - 有三種匯出類型:
- ActualCost - 顯示指定期間所產生的總使用量和成本,並在帳單上顯示。
- AmortizedCost - 顯示指定期間的總使用量和成本,並將分攤套用至適用的保留購買成本。
- 使用量 - 在 2020 年 7 月 20 日之前建立的匯出全都是「使用量」類型。 請將所有已排程的匯出更新為 ActualCost 或 AmortizedCost。
- 資料行 - 定義您想要包含在匯出檔案中的資料欄位。 其會對應至成本詳細資料 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
您可以使用成本管理,將 Azure 使用量詳細資料的排程匯出到 Azure 儲存體帳戶作為 Blob。 產生的 Blob 大小可能超過 GB。 成本管理小組與 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 影響,證明最適合用於測試。
如需詳細資訊和範例程式代碼,請參閱相關內容一節中的連結。
測試結果
測試編號 | 至區域 | Blob | 時間 (秒) | 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 | 使用八個記憶體帳戶的四個平行傳輸:四個西部到四個東部平均每一傳輸 |
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 相關:
- DML 可以傳輸單一 Blob 或目錄。 針對目錄傳輸,您可以使用搜尋模式來比對 Blob 前置詞。
- 區塊 Blob 傳輸會平行進行。 所有作業都會在傳輸程序結束時完成。 個別 Blob 區塊會平行傳輸。
- 傳輸會在用戶端上以非同步方式執行。 傳輸狀態可透過回呼方法取得,該方法可以在 TransferContext 物件中定義。
- 傳輸會在進度期間建立檢查點,並公開 TransferCheckpoint 物件。 物件代表透過 TransferCoNtext 物件的最新檢查點。 如果在取消/中止傳輸之前儲存 TransferCheckpoint,則最多可以在七天內從檢查點繼續傳輸。 傳輸可以從任何檢查點繼續,而不只是最新的檢查點。
- 如果傳輸客戶端進程終止並重新啟動,而不實作檢查點功能:
- 在完成任何 Blob 傳輸之前,傳輸會重新啟動。
- 某些 Blob 完成之後,傳輸只會針對未完成的 Blob 重新啟動。
- 暫停用戶端執行會暫停傳輸。
- Blob 傳輸功能會從暫時性失敗擷取用戶端。 例如,記憶體帳戶節流通常不會造成傳輸失敗,但會降低傳送速率。
- 服務端傳輸對於 CPU 和記憶體、某些網路頻寬和連線具有低用戶端資源使用量。
非同步傳輸特性
您可以叫用 TransferManager.CopyDirectoryAsync() 方法搭配 CopyMethod.ServiceSideAsyncCopy 選項。 其運作方式類似於用戶端觀點的同步傳輸機制,但是作業有下列差異:
- 傳輸速率比對等同步傳輸慢(通常為 10 MB/秒或更少)。
- 即使用戶端程序終止,傳輸仍會繼續。
- 雖然支援檢查點,但在傳輸的目前狀態,使用 TransferCheckpoint 繼續傳輸並不會繼續。
測試摘要
Azure Blob 儲存體使用其服務端同步傳輸功能支援高全域傳輸速率。 使用 .NET 應用程式中的功能就是直接使用資料移動程式庫。 成本管理可以在一小時內將數百 GB 的資料可靠地複製到任何位置的儲存體帳戶。
相關內容
- 請參閱 Microsoft Azure 儲存體資料移動程式庫來源。
- 透過資料移動程式庫傳輸資料。
- 請參閱 AzureDmlBackup 範例應用程式來源範例。
- 請參閱使用 Azure Blob 儲存體獲得高輸送量。