Opakované načítání rozsáhlých datových sad nákladů s využitím exportů

Tento článek vám pomůže pravidelně exportovat velké objemy dat s exporty ze služby Cost Management. Export je doporučený způsob načítání neagregovaných informací o nákladech. Zvláště pokud jsou soubory využití příliš velké na spolehlivé volání a stahování pomocí rozhraní API Pro podrobnosti nákladů. Exportovaná data se uloží do účtu Azure Storage, který zvolíte. Odsud je můžete načítat do vlastních systémů a analyzovat podle vašich potřeb. Pokud chcete nakonfigurovat exporty na webu Azure Portal, přečtěte si téma věnované exportu dat.

Pokud chcete automatizovat exporty pro různé rozsahy, vhodným výchozím bodem je ukázkový požadavek rozhraní API uvedený v další části. Můžete využít rozhraní API pro export a vytvořit automatické exporty jako součást obecné konfigurace prostředí. Automatické exporty vám pomohou zajistit, že máte potřebná data. Při rozšiřování využití Azure je můžete využít ve vlastních systémech vaší organizace.

Běžné konfigurace exportu

Před vytvořením prvního exportu se zamyslete nad scénářem a možnostmi konfigurace, které jsou pro něj potřeba. Zvažte následující možnosti exportu:

  • Opakování: Určuje, jak často běží úlohy exportu a kdy se do účtu Azure Storage umístí výsledný soubor. Možnosti jsou každý den, každý týden nebo každý měsíc. Zkuste nakonfigurovat opakování tak, aby odpovídalo úlohám importu dat používaným interním systémem vaší organizace.
  • Období opakování: Určuje, po jak dlouhou dobu zůstane export platný. Soubory se exportují jenom během období opakování.
  • Časový rámec: Určuje množství dat vygenerovaných exportem při konkrétním spuštění. Běžné možnosti jsou od začátku měsíce a od začátku týdne.
  • Datum zahájení: Určuje, odkdy má začít platit rozvrh pro export. Export se vytvoří v den zahájení a následně na základě určeného opakování.
  • Typ – Existují tři typy exportu:
    • ActualCost: Celkové využití a náklady za zadané období tak, jak se vyúčtují a zobrazí na faktuře.
    • AmortizedCost: Celkové využití a náklady za zadané období. U nákladů na nákup rezervací se přitom použije odpovídající amortizace.
    • Usage: Typu Usage jsou všechny exporty vytvořené do 20. července 2020. Všechny naplánované exporty aktualizujte jako ActualCost nebo AmortizedCost.
  • Sloupce: Definuje datová pole, která chcete zahrnout do souboru exportu. Odpovídají polím dostupným v rozhraní API Podrobnosti nákladů.
  • Dělení – Pokud máte velkou datovou sadu a chcete, aby byla rozdělená do více souborů, nastavte možnost true. Díky tomu je příjem dat mnohem rychlejší a jednodušší. Další informace o dělení najdete v tématu Dělení souborů pro velké datové sady.

Vytvoření denního exportu od začátku měsíce pro předplatné

Adresa URL požadavku: 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/00000000-0000-0000-0000-000000000000/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"
          ]
        }
      }
    }
}

Kopírování velkých objektů blob úložiště Azure

Službu Cost Management můžete použít k naplánování exportu podrobností o využití Azure do účtů Azure Storage jako objektů blob. Výsledné velikosti objektů blob můžou být větší než gigabajty. Tým Cost Management pracoval s týmem služby Azure Storage na testování kopírování velkých objektů blob úložiště Azure. Výsledky jsou popsané v následujících částech. Při kopírování objektů blob úložiště z jedné oblasti Azure do druhé můžete očekávat podobné výsledky.

Aby tým otestoval výkon, přenesl objekty blob z účtů úložiště v oblasti USA – západ do stejných a dalších oblastí. Tým měří rychlosti v rozsahu od 2 GB za sekundu ve stejné oblasti do 150 MB za sekundu do účtů úložiště v oblasti Jihovýchodní Asie.

Testovací konfigurace

Pro měření rychlosti přenosu objektů blob tým vytvořil jednoduchou konzolovou aplikaci .NET odkazující na nejnovější verzi (v2.0.1) knihovny Azure Data Movement Library (DLM) prostřednictvím NuGetu. DLM je sada SDK poskytovaná týmem služby Azure Storage, která umožňuje programový přístup ke svým transferovým službám. Pak vytvořili účty úložiště Standard V2 ve více oblastech a jako zdrojnou oblast používají USA – západ. Naplní tam účty úložiště kontejnery, kde každý uchovává deset objektů blob bloku o velikosti 2 GB. Kontejnery zkopírovaly do jiných účtů úložiště pomocí metody TransferManager.CopyDirectoryAsync() DLM s možností CopyMethod.ServiceSideSyncCopy. Testy byly provedeny na počítači s Windows 10 s 12 jádry a sítí 1 GbE.

Použitá nastavení aplikace:

  • TransferManager.Configurations.ParallelOperations = Environment.ProcessorCount * 32. Tým zjistil, že nastavení má největší vliv na celkovou propustnost. Hodnota 32násobku počtu jader poskytla nejlepší propustnost testovacího klienta.
  • ServicePointManager.Default Připojení ionLimit = int. MaxValue. Když ho nastavíte na maximální hodnotu, projdete úplnou kontrolou přenosového paralelismu do výše uvedeného nastavení ParallelOperations .
  • TransferManager.Configurations.BlockSize = 4 194 304. Mělo nějaký vliv na přenosové rychlosti s 4 MB a ukázalo se, že je nejlepší pro testování.

Další informace a vzorový kód najdete v odkazech v části Související obsah .

Výsledky testů

Číslo testu Do oblasti Objekty blob Čas (sekundy) MB/s Komentáře
0 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 4 paralelní přenosy s využitím 8 účtů úložiště: 4 – západ až 4 – východ průměr na přenos
6 EastUS 2 GB x 10 x 4 92 870 4 paralelní přenosy z 1 účtu úložiště do jiného
5 EastUS 2G x 10 x 8 148 135 8 paralelních přenosů s využitím 8 účtů úložiště: 4 – západ až 4x2 – východ průměr na přenos
7 SE Asia 2 GB x 10 133 150
8 SE Asia 2 GB x 10 x 4 444 180 4 paralelní přenosy z 1 účtu úložiště do jiného

Charakteristiky přenosu synchronizace

Tady jsou některé vlastnosti přenosu synchronizace na straně služby používaného s DML, které jsou relevantní pro jeho použití:

  • DML může přenášet jeden objekt blob nebo adresář. Pro přenos adresářů můžete použít vzor vyhledávání, který se shoduje s předponou objektu blob.
  • Přenosy objektů blob bloku probíhají paralelně. Vše se dokončí na konci procesu přenosu. Jednotlivé bloky objektů blob se přenášejí paralelně.
  • Přenos se provádí asynchronně v klientovi. Stav přenosu je k dispozici pravidelně prostřednictvím zpětného volání metody, kterou lze definovat v objektu TransferContext .
  • Během přenosu vytváří kontrolní body a zveřejňuje objekt TransferCheckpoint . Objekt představuje nejnovější kontrolní bod prostřednictvím TransferContext objektu. Pokud je transferCheckpoint uložen před zrušením nebo přerušením převodu, lze převod obnovit z kontrolního bodu po dobu až sedmi dnů. Přenos je možné obnovit z jakéhokoli kontrolního bodu, ne jenom z nejnovějšího.
  • Pokud je proces přenosu klienta zrušen a restartován bez implementace funkce kontrolního bodu.
    • Před dokončením přenosů objektů blob se přenos restartuje.
    • Po dokončení některých objektů blob se přenos restartuje pouze pro neúplné objekty blob.
  • Pozastavení spuštění klienta pozastaví přenosy.
  • Funkce přenosu objektů blob abstrahuje klienta od přechodných selhání. Například omezování účtu úložiště obvykle nezpůsobí selhání přenosu, ale zpomalí přenos.
  • Přenosy na straně služby mají nízké využití prostředků klienta pro procesor a paměť, určitou šířku pásma sítě a připojení.

Charakteristiky asynchronního přenosu

Metodu TransferManager.CopyDirectoryAsync() můžete vyvolat pomocí možnosti CopyMethod.ServiceSideAsyncCopy . Funguje podobně jako mechanismus přenosu synchronizace z pohledu klienta, ale s následujícími rozdíly v provozu:

  • Přenosové rychlosti jsou mnohem pomalejší než ekvivalentní přenos synchronizace (obvykle 10 MB/s nebo méně).
  • Přenos pokračuje i v případě, že se proces klienta ukončí.
  • I když jsou kontrolní body podporované, obnovení přenosu pomocí transferCheckpointu nebude pokračovat v době kontrolního bodu, ale v aktuálním stavu přenosu.

Souhrn testů

Azure Blob Storage podporuje vysokou globální rychlost přenosu díky funkci přenosu na straně služby. Použití funkce v aplikacích .NET je jednoduché pomocí knihovny pro přesun dat. Exporty služby Cost Management umožňují spolehlivě kopírovat stovky gigabajtů dat do účtu úložiště do účtu úložiště za méně než hodinu.