Gegevenssets met grote kosten regelmatig ophalen met exports

Dit artikel helpt u regelmatig grote hoeveelheden gegevens te exporteren met exports vanuit Cost Management. Exporteren is de aanbevolen manier om niet-samengevoegde kostengegevens op te halen, Met name wanneer gebruiksbestanden te groot zijn om betrouwbaar aan te roepen en te downloaden met behulp van de API voor kostendetails . Geëxporteerde gegevens worden in het Azure Storage-account van uw keuze geplaatst. Van daaruit kunt u ze in uw eigen systemen laden en naar behoefte analyseren. Zie Gegevens exporteren om exports in Azure Portal te configureren.

Als u exports met verschillende bereiken wilt automatiseren, is het voorbeeld van een API-aanvraag in de volgende sectie een goed uitgangspunt. U kunt de Exports-API gebruiken om automatische exports te maken als onderdeel van uw algemene omgevingsconfiguratie. Automatische exports helpen te verzekeren dat u over de gegevens beschikt die u nodig hebt. U kunt ze gebruiken in de systemen van uw eigen organisatie naarmate u uw Azure-gebruik uitbreidt.

Algemene exportconfiguraties

Voordat u uw eerste export maakt, overweegt u uw scenario en de configuratieopties die u nodig hebt om het mogelijk te maken. Overweeg de volgende exportopties:

  • Terugkeerpatroon: Bepaalt hoe vaak de exporttaak wordt uitgevoerd en wanneer een bestand in uw Azure Storage-account wordt geplaatst. Kies tussen Dagelijks, Wekelijks en Maandelijks. Probeer uw terugkeerpatroon zodanig te configureren dat het overeenkomt met de gegevensimporttaken die worden gebruikt door het interne systeem van uw organisatie.
  • Terugkeerperiode: Bepaalt hoelang de export geldig blijft. Bestanden worden alleen geëxporteerd tijdens de terugkeerperiode.
  • Tijdsbestek: Bepaalt hoeveel gegevens er door de export worden gegenereerd bij een bepaalde uitvoering. Algemene opties zijn MonthToDate en WeekToDate.
  • StartDate: Hiermee configureert u wanneer u wilt dat het exportschema begint. Een export wordt gemaakt op de StartDate en wordt daarna gebaseerd op uw Terugkeerpatroon.
  • Type: Er zijn drie exporttypen:
    • ActualCost: Toont het totale gebruik en de totale kosten voor de opgegeven periode naarmate ze worden gemaakt en weergegeven op uw factuur.
    • AmortizedCost: Toont het totale gebruik en de totale kosten voor de opgegeven periode, waarbij afschrijving wordt toegepast op de toepasselijke aankoopkosten van reserveringen.
    • Gebruik: Alle exports die vóór 20 juli 2020 zijn gemaakt, zijn van het type Gebruik. Werk al uw geplande exports bij als ActualCost of AmortizedCost.
  • Kolommen: Definieert de gegevensvelden die u in uw exportbestand wilt opnemen. Ze komen overeen met de velden die beschikbaar zijn in de API voor kostendetails .
  • Partitionering : stel de optie in op true als u een grote gegevensset hebt en deze wilt opsplitsen in meerdere bestanden. Hierdoor wordt de gegevensopname veel sneller en eenvoudiger. Zie Bestandspartitionering voor grote gegevenssets voor meer informatie over partitionering.

Een dagelijkse export van maand tot heden maken voor een abonnement

Aanvraag-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/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"
          ]
        }
      }
    }
}

Grote Azure Storage-blobs kopiëren

U kunt Cost Management gebruiken om exports van uw Azure-gebruiksgegevens als blobs naar uw Azure Storage-accounts te plannen. De resulterende blobgrootten kunnen groter zijn dan gigabytes. Het Cost Management-team heeft samen met het Azure Storage-team het kopiëren van grote Azure-opslagblobs getest. De resultaten worden beschreven in de volgende secties. U kunt vergelijkbare resultaten verwachten als u opslagblobs van de ene Azure-regio naar de andere kopieert.

Om de prestaties te testen, heeft het team blobs overgedragen van opslagaccounts in de regio US - west naar dezelfde en andere regio's. Het team heeft snelheden gemeten van 2 GB per seconde in dezelfde regio tot 150 MB per seconde tot opslagaccounts in de regio Zuidoost-Azië.

Configuratie testen

Om de bloboverdrachtsnelheden te meten, heeft het team een eenvoudige .NET-consoletoepassing gemaakt die verwijst naar de nieuwste versie (v2.0.1) van de Azure Data Movement Library (DLM) via NuGet. DLM is een SDK die wordt geleverd door het Azure Storage-team waarmee programmatische toegang tot hun overdrachtsservices mogelijk wordt. Vervolgens maakten ze Standard V2-opslagaccounts in meerdere regio's en gebruiken ze VS - west als de bronregio. Ze hebben de opslagaccounts daar gevuld met containers, waarbij elk tien blok-blobs van 2 GB bevat. Ze hebben de containers gekopieerd naar andere opslagaccounts met behulp van de methode TransferManager.CopyDirectoryAsync() van DLM met de optie CopyMethod.ServiceSideSyncCopy . Tests zijn uitgevoerd op een computer met Windows 10 met 12 kernen en een 1 GbE-netwerk.

Gebruikte toepassingsinstellingen:

  • TransferManager.Configurations.ParallelOperations = Environment.ProcessorCount * 32. Het team vond dat de instelling het meeste effect had op de algehele doorvoer. Een waarde van 32 keer het aantal kernen biedt de beste doorvoer voor de testclient.
  • ServicePointManager.DefaultConnectionLimit = int. MaxValue. Als u deze instelt op een maximale waarde, wordt het volledige beheer van de overdracht van parallelle uitvoering effectief doorgegeven aan de instelling ParallelOperations hierboven.
  • TransferManager.Configurations.BlockSize = 4,194,304. Het had enig effect op overdrachtssnelheden met 4 MB, wat het beste bleek te zijn voor testen.

Zie koppelingen in de sectie Volgende stappen voor meer informatie en voorbeeldcode.

Testresultaten

Testnummer Naar regio Blobs Tijd (seconden) MB/s Opmerkingen
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 4 parallelle overdrachten met 8 opslagaccounts: gemiddeld 4 west tot 4 oost per overdracht
6 EastUS 2 GB x 10 x 4 92 870 4 parallelle overdrachten van 1 opslagaccount naar een ander
5 EastUS 2G x 10 x 8 148 135 8 parallelle overdrachten met 8 opslagaccounts: gemiddeld 4 west tot 4x2 oost per overdracht
7 Zuidoost-Azië 2 GB x 10 133 150
8 Zuidoost-Azië 2 GB x 10 x 4 444 180 4 parallelle overdrachten van 1 opslagaccount naar een ander opslagaccount

Kenmerken van synchronisatieoverdracht

Hier volgen enkele kenmerken van de synchronisatieoverdracht aan de servicezijde die wordt gebruikt met DML die relevant zijn voor het gebruik ervan:

  • DML kan één blob of een map overdragen. Voor adreslijstoverdracht kunt u een zoekpatroon gebruiken dat overeenkomt met het blobvoorvoegsel.
  • Blok-bloboverdrachten vinden parallel plaats. Allemaal voltooid aan het einde van het overdrachtsproces. Afzonderlijke blobblokken worden parallel overgedragen.
  • De overdracht wordt asynchroon uitgevoerd op de client. De overdrachtsstatus is periodiek beschikbaar via een callback naar een methode die kan worden gedefinieerd in een TransferContext-object .
  • Tijdens de overdracht worden controlepunten gemaakt tijdens de voortgang en wordt een TransferCheckpoint-object weergegeven. Het object vertegenwoordigt het meest recente controlepunt via het object TransferContext . Als het TransferCheckpoint wordt opgeslagen voordat een overdracht wordt geannuleerd/afgebroken, kan de overdracht worden hervat vanaf het controlepunt gedurende maximaal zeven dagen. De overdracht kan worden hervat vanaf elk controlepunt, niet alleen vanaf de meest recente.
  • Als het overdrachtsclientproces wordt beëindigd en opnieuw wordt gestart zonder de controlepuntfunctie te implementeren.
    • Voordat eventuele bloboverdrachten zijn voltooid, wordt de overdracht opnieuw gestart.
    • Nadat sommige van de blobs zijn voltooid, wordt de overdracht opnieuw gestart voor alleen de onvolledige blobs.
  • Als u de uitvoering van de client onderbreekt, worden de overdrachten onderbroken.
  • De functie bloboverdracht abstraheert de client van tijdelijke fouten. Zo zorgt beperking van opslagaccounts er normaal gesproken niet voor dat een overdracht mislukt, maar de overdracht wordt vertraagd.
  • Overdrachten aan de servicezijde hebben een laag gebruik van clientresources voor CPU en geheugen, bepaalde netwerkbandbreedte en verbindingen.

Kenmerken van asynchrone overdracht

U kunt de methode TransferManager.CopyDirectoryAsync() aanroepen met de optie CopyMethod.ServiceSideAsyncCopy . Het werkt vergelijkbaar met het mechanisme voor synchronisatieoverdracht vanuit het perspectief van de client, maar met de volgende verschillen in bewerking:

  • Overdrachtssnelheden zijn veel langzamer dan de equivalente synchronisatieoverdracht (meestal 10 MB/s of minder).
  • De overdracht gaat door, zelfs als het clientproces wordt beëindigd.
  • Hoewel controlepunten worden ondersteund, wordt het hervatten van een overdracht met behulp van een TransferCheckpoint niet hervat op het controlepunt, maar bij de huidige status van de overdracht.

Testsamenvatting

Azure Blob Storage ondersteunt hoge wereldwijde overdrachtssnelheden met de functie voor synchronisatieoverdracht aan de servicezijde. Het gebruik van de functie in .NET-toepassingen is eenvoudig met behulp van de bibliotheek voor gegevensverplaatsing. Het is mogelijk dat Cost Management-exports in minder dan een uur op betrouwbare wijze honderden gigabytes aan gegevens naar een opslagaccount kunnen kopiëren.

Volgende stappen