Nagy méretű költségadathalmazok ismétlődő lekérése az Exports használatával

Ez a cikk segít rendszeresen nagy mennyiségű adat exportálásában a Cost Managementből származó exportálásokkal. Az exportálás az ajánlott módszer a nem összesített költségadatok lekérésére. Különösen akkor, ha a használati fájlok túl nagyok ahhoz, hogy megbízhatóan hívjanak és töltsenek le a Cost Details API használatával. Az exportált adatok a kiválasztott Azure Storage-fiókba lesznek helyezve. Ezt követően betöltheti az adatokat a saját rendszereibe, és igény szerint elemezheti őket. Az Exports az Azure Portalon való konfigurálásához lásd az adatok exportálását ismertető szakaszt.

Ha az exportálást különböző hatókörökben szeretné automatizálni, a következő szakaszban található minta API-kérelem jó kiindulási pont lehet. Az Exports API-val az általános környezeti konfiguráció részeként hozhat létre automatikus exportálást. Az automatikus exportálással biztosíthatja, hogy a szükséges adatok rendelkezésére álljanak. Az Azure használatának bővítésével párhuzamosan ezt a saját szervezeti rendszerében is használhatja.

Az exportálások gyakori konfigurációi

Az első exportálás létrehozása előtt állapítsa meg, milyen az adott forgatókönyv, és milyen konfigurációs beállításokkal valósulhat meg. Fontolja meg a következő exportálási beállítások alkalmazását:

  • Ismétlődés – Meghatározza az exportálási feladat futtatásának gyakoriságát és a fájlok Azure Storage-fiókba való helyezésének idejét. Napi, heti és havi ütemezés választható. Próbálja meg úgy konfigurálni az ismétlődést, hogy az megfelelő legyen a szervezet belső rendszere által használt adatimportálási feladatokhoz.
  • Ismétlődési időtartam – Meghatározza az exportálás érvényességének időtartamát. A fájlokat a rendszer csak az ismétlődési időtartamban exportálja.
  • Időkeret – Meghatározza az egy adott futtatás során az exportálás által előállított adatok mennyiségét. Gyakran használt lehetőség az Ebben a hónapban és az Ez a hét.
  • Kezdő dátum – Konfigurálja az exportálás ütemezésének kezdetét. Az exportálás létrehozása a Kezdő dátum értékeként megadott napon történik, majd ezt követően az Ismétlődés alapján.
  • Típus – Az exportálásnak három típusa van:
    • Tényleges költség – Egy meghatározott időszak alatt keletkező és a számlán megjelenő összes használatot és költséget mutatja.
    • Amortizált költség – Egy meghatározott időszak alatt keletkező és a számlán megjelenő összes használatot és költséget mutatja a vonatkozó foglalásvásárlási költségekre alkalmazott amortizációval együtt.
    • Használat – A 2020. július 20. előtt létrehozott valamennyi exportálás Használat típusú. Frissítse az összes ütemezett exportálást Tényleges költség vagy Amortizált költség típusúra.
  • Oszlopok – Meghatározza, hogy milyen adatmezőket tartalmazzon az exportált fájl. Ezek megfelelnek a Cost Details API-ban elérhető mezőknek .
  • Particionálás – Állítsa igaz értékre a beállítást, ha nagy adatkészlettel rendelkezik, és azt szeretné, hogy több fájlra bontsa. Ez sokkal gyorsabban és egyszerűbben teszi az adatbetöltést. A particionálással kapcsolatos további információkért lásd: Fájlparticionálás nagy adathalmazokhoz.

Napi tárgyhavi exportálás létrehozása egy előfizetéshez

Kérés URL-címe: 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"
          ]
        }
      }
    }
}

Nagyméretű Azure Storage-blobok másolása

A Cost Management használatával blobokként ütemezheti az Azure-beli használati adatok exportálását az Azure Storage-fiókokba. Az eredményként kapott blobméretek mérete meghaladhatja a gigabájtot. A Cost Management csapata az Azure Storage csapatával együttműködve tesztelte a nagy Méretű Azure Storage-blobok másolását. Az eredményeket az alábbi szakaszokban dokumentáljuk. A tárolóblobok azure-régióból egy másikba másolása hasonló eredményre számíthat.

A teljesítmény teszteléséhez a csapat az USA nyugati régiójában található tárfiókokból ugyanahhoz és más régiókhoz továbbított blobokat. A csapat az ugyanabban a régióban másodpercenként 2 GB és másodpercenként 150 MB közötti sebességet mért a délkelet-ázsiai régió tárfiókjaiig.

Konfiguráció tesztelése

A blobátviteli sebesség méréséhez a csapat létrehozott egy egyszerű .NET-konzolalkalmazást, amely az Azure Data Movement Library (DLM) legújabb (2.0.1-es) verziójára hivatkozik a NuGeten keresztül. A DLM az Azure Storage csapata által biztosított SDK, amely programozott hozzáférést biztosít az átviteli szolgáltatásaikhoz. Ezután standard V2-tárfiókokat hoztak létre több régióban, és az USA nyugati régióját használják forrásrégióként. Az ott található tárfiókokat tárolókkal töltik fel, ahol mindegyik tíz 2 GB-os blokkblobot tartott. A tárolókat más tárfiókokba másolták a DLM TransferManager.CopyDirectoryAsync() metódusával a CopyMethod.ServiceSideSyncCopy beállítással. A teszteket egy 12 maggal és 1 GbE hálózattal rendelkező Windows 10 futtató számítógépen végezték el.

Használt alkalmazásbeállítások:

  • TransferManager.Configurations.ParallelOperations = Environment.ProcessorCount * 32. A csapat úgy találta, hogy a beállítás a legnagyobb hatással van az általános átviteli sebességre. A magok számának 32-szeresét tartalmazó érték biztosította a legjobb átviteli sebességet a tesztügyfél számára.
  • ServicePointManager.DefaultConnectionLimit = int. MaxValue. A maximális értékre történő beállítás hatékonyan továbbítja az átviteli párhuzamosság teljes vezérlését a fenti ParallelOperations beállításnak.
  • TransferManager.Configurations.BlockSize = 4 194 304. Ez némi hatással volt a 4 MB-os átviteli sebességre, és a teszteléshez a legjobbnak bizonyult.

További információkért és mintakódért tekintse meg a Következő lépések szakaszban található hivatkozásokat.

Teszteredmények

Tesztszám Régióba Blobok Idő (másodperc) MB/s Megjegyzések
1 WestUS 2 GB x 10 10 2000
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 párhuzamos átvitel 8 tárfiók használatával: 4 nyugati és 4 keleti átlag átvitelenként
6 EastUS 2 GB x 10 x 4 92 870 4 párhuzamos átvitel 1 tárfiókból egy másikba
5 EastUS 2G x 10 x 8 148 135 8 párhuzamos átvitel 8 tárfiókkal: 4 nyugati és 4x2 keleti átlag átvitelenként
7 SE Ázsia 2 GB x 10 133 150
8 SE Ázsia 2 GB x 10 x 4 444 180 4 párhuzamos átvitel 1 tárfiókból egy másikba

Szinkronizálásátviteli jellemzők

Íme néhány, a DML-hez használt szolgáltatásoldali szinkronizálási átvitel jellemzői, amelyek relevánsak a használata szempontjából:

  • A DML egyetlen blobot vagy könyvtárat tud átvinni. A címtárátadáshoz használhat keresési mintát a blobelőtagok egyeztetéséhez.
  • A blokkblobok átvitele párhuzamosan történik. Minden az átadási folyamat vége felé fejeződik be. Az egyes blobblokkok párhuzamosan lesznek átadva.
  • Az átvitel aszinkron módon lesz végrehajtva az ügyfélen. Az átvitel állapota rendszeres időközönként elérhető egy TransferContext objektumban definiálható metódus visszahívásával.
  • Az átvitel ellenőrzőpontokat hoz létre a folyamat során, és elérhetővé tesz egy TransferCheckpoint objektumot. Az objektum a Legújabb ellenőrzőpontot jelöli a TransferContext objektumon keresztül. Ha a TransferCheckpointot az átvitel megszakítása/megszakítása előtt menti a rendszer, az átadás akár hét napig is folytatható az ellenőrzőpontról. Az átvitel bármely ellenőrzőpontról folytatható, nem csak a legújabbakból.
  • Ha az átadási ügyfélfolyamat le van kapcsolva és újraindul az ellenőrzőpont-funkció implementálása nélkül.
    • A blobátvitelek befejezése előtt az átvitel újraindul.
    • Néhány blob befejezése után az átvitel csak a hiányos blobok esetében indul újra.
  • Az ügyfél végrehajtásának felfüggesztése felfüggeszti az átviteleket.
  • A blobátviteli funkció elvonja az ügyfelet az átmeneti hibáktól. A tárfiók szabályozása például általában nem okozza az átvitel meghiúsulását, de lelassítja az átvitelt.
  • A szolgáltatásoldali átvitelek alacsony ügyfélerőforrás-használattal rendelkeznek a processzor és a memória, néhány hálózati sávszélesség és kapcsolatok esetében.

Az aszinkron átvitel jellemzői

A TransferManager.CopyDirectoryAsync() metódust a CopyMethod.ServiceSideAsyncCopy beállítással hívhatja meg. Az ügyfél szempontjából a szinkronizálásátviteli mechanizmushoz hasonlóan működik, de a működésben az alábbi különbségekkel:

  • Az átviteli sebesség sokkal lassabb, mint az egyenértékű szinkronizálási átvitel (általában 10 MB/s vagy kisebb).
  • Az átvitel akkor is folytatódik, ha az ügyfélfolyamat leáll.
  • Bár az ellenőrzőpontok támogatottak, az átvitel TransferCheckpoint használatával történő folytatása nem folytatódik az ellenőrzőpont időpontjában, hanem az átvitel aktuális állapotában.

Teszt összefoglalása

Az Azure Blob Storage szolgáltatásoldali szinkronizálási funkciójával támogatja a magas globális átviteli sebességet. A .NET-alkalmazásokban a funkció használata egyszerű az adatáthelyezési kódtár használatával. A Cost Management-exportálások több száz gigabájtnyi adatot is megbízhatóan másolnak egy tárfiókba kevesebb mint egy óra alatt.

Következő lépések