分享方式:


使用匯出功能重複擷取大型成本資料集

本文協助您從成本管理透過匯出來定期匯出大量資料。 建議您使用匯出來擷取未彙總成本資料。 特別是當使用量檔案太大,而無法使用成本詳細資料 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 的資料可靠地複製到任何位置的儲存體帳戶。