Udostępnij za pośrednictwem


Cykliczne pobieranie dużych zestawów danych kosztów za pomocą eksportów

Ten artykuł ułatwia regularne eksportowanie dużych ilości danych z eksportami z usługi Cost Management. Eksportowanie jest zalecanym sposobem pobierania niezagregowanych danych dotyczących kosztów. Szczególnie gdy pliki użycia są zbyt duże, aby niezawodnie wywoływać i pobierać przy użyciu interfejsu API szczegółów kosztów. Wyeksportowane dane są umieszczane na wybranym koncie usługi Azure Storage. Stamtąd możesz ładować je do własnych systemów i analizować zgodnie z potrzebami. Aby skonfigurować eksporty w witrynie Azure Portal, zobacz Eksportowanie danych.

Jeśli chcesz zautomatyzować eksporty w różnych zakresach, dobrym punktem wyjścia jest przykładowe żądanie interfejsu API w następnej sekcji. Za pomocą interfejsu API eksportów możesz tworzyć automatyczne eksporty w ramach ogólnej konfiguracji środowiska. Automatyczne eksporty pomagają upewnić się, że masz potrzebne dane. W miarę rozszerzania zakresu zastosowań platformy Azure możesz używać ich w systemach swojej organizacji.

Typowe konfiguracje eksportu

Zanim utworzysz pierwszy eksport, rozważ scenariusz i opcje konfiguracji niezbędne do jego realizacji. Rozważ następujące opcje eksportu:

  • Cykl — określa częstotliwość uruchamiania zadania eksportu oraz moment umieszczenia pliku na koncie usługi Azure Storage. Do wyboru są opcje Codziennie, Co tydzień i Co miesiąc. Spróbuj skonfigurować cykl w taki sposób, aby pasował do zadań importu danych używanych przez wewnętrzny system w organizacji.
  • Okres cyklu — określa, jak długo eksport pozostaje ważny. Pliki są eksportowane tylko w okresie cyklu.
  • Przedział czasu — określa ilość danych wygenerowanych przez eksport w danym przebiegu. Typowe opcje to Bieżący miesiąc i Bieżący tydzień.
  • Data rozpoczęcia — konfiguruje czas rozpoczęcia harmonogramu eksportu. Eksport jest tworzony w dniu rozpoczęcia i później, w zależności od ustawień cyklu.
  • Typ — istnieją trzy typy eksportu:
    • Koszt rzeczywisty — pokazuje łączne użycie i koszty dla określonego okresu, gdy są naliczane i widoczne na rachunku.
    • Koszt amortyzowany — pokazuje łączne użycie i koszty dla określonego okresu z zastosowaną amortyzacją obowiązujących kosztów zakupu rezerwacji.
    • Użycie — wszystkie eksporty utworzone przed 20 lipca 2020 r. mają typ Użycie. Zaktualizuj wszystkie zaplanowane eksporty jako Koszt rzeczywisty lub Koszt amortyzowany.
  • Kolumny — definiuje pola danych, które mają być uwzględnione w pliku eksportu. Odpowiadają one polam dostępnym w interfejsie API szczegółów kosztów.
  • Partycjonowanie — ustaw opcję true, jeśli masz duży zestaw danych i chcesz podzielić go na wiele plików. Dzięki temu pozyskiwanie danych jest szybsze i łatwiejsze. Aby uzyskać więcej informacji na temat partycjonowania, zobacz Partycjonowanie plików dla dużych zestawów danych.

Tworzenie codziennego eksportu z bieżącego miesiąca na potrzeby subskrypcji

Adres URL żądania: 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"
          ]
        }
      }
    }
}

Kopiowanie dużych obiektów blob usługi Azure Storage

Usługa Cost Management umożliwia zaplanowanie eksportów szczegółów użycia platformy Azure na kontach usługi Azure Storage jako obiektów blob. Wynikowe rozmiary obiektów blob mogą wynosić ponad gigabajty. Zespół usługi Cost Management współpracował z zespołem usługi Azure Storage w celu przetestowania kopiowania dużych obiektów blob usługi Azure Storage. Wyniki zostały udokumentowane w poniższych sekcjach. Możesz oczekiwać, że wyniki będą podobne, ponieważ kopiujesz obiekty blob magazynu z jednego regionu platformy Azure do innego.

Zespół przeprowadził test wydajnościowy, przenosząc obiekty blob z kont magazynu znajdujących się w regionie Zachodnie stany USA do tego samego regionu i do innych regionów. Zespół mierzył prędkości z zakresu od 2 GB na sekundę w tym samym regionie do 150 MB na sekundę do kont magazynu w regionie Azji Południowo-Wschodniej.

konfiguracja testowa

Aby zmierzyć szybkość transferu obiektów blob, zespół utworzył prostą aplikację konsolową platformy .NET odwołującą się do najnowszej wersji (v2.0.1) biblioteki azure data movement library (DLM) za pośrednictwem narzędzia NuGet. DLM to zestaw SDK udostępniany przez zespół usługi Azure Storage, który umożliwia programowy dostęp do swoich usług transferu. Następnie utworzyli konta magazynu w wersji Standardowa w wersji 2 w wielu regionach i używają regionu Zachodnie stany USA jako regionu źródłowego. Wypełnili tam konta magazynu kontenerami, w których każdy przechowywał dziesięć blokowych obiektów blob o rozmiarze 2 GB. Skopiowali kontenery do innych kont magazynu przy użyciu metody TransferManager.CopyDirectoryAsync() dlM z opcją CopyMethod.ServiceSideSyncCopy. Testy przeprowadzono na komputerze z systemem Windows 10 z 12 rdzeniami i siecią 1 GbE.

Używane ustawienia aplikacji:

  • TransferManager.Configurations.ParallelOperations = Environment.ProcessorCount * 32. Zespół stwierdził, że ustawienie ma największy wpływ na ogólną przepływność. Wartość 32-krotna liczby rdzeni zapewnia najlepszą przepływność dla klienta testowego.
  • ServicePointManager.Default Połączenie ionLimit = int. MaxValue. Ustawienie jej na maksymalną wartość skutecznie przekazuje pełną kontrolę nad równoległością transferu do ustawienia ParallelOperations wymienionych wcześniej.
  • TransferManager.Configurations.BlockSize = 4,194,304. Miało to jakiś wpływ na szybkość transferu z 4 MB, co okazało się najlepsze do testowania.

Aby uzyskać więcej informacji i przykładowy kod, zobacz linki w sekcji Powiązana zawartość .

Wyniki testu

Numer testu Do regionu Obiekty blob Czas (s) MB/s Komentarze
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
100 EastUS 2 GB x 10 x 4 99 200 Cztery transfery równoległe przy użyciu ośmiu kont magazynu: cztery zachodnie do czterech średnich wschodnich na transfer
6 EastUS 2 GB x 10 x 4 92 870 Cztery równoległe transfery z jednego konta magazynu do innego
5 EastUS 2 GB x 10 x 8 148 135 Osiem równoległych transferów przy użyciu ośmiu kont magazynu: cztery zachodnie do czterech średnich wschodnich na transfer
7 Azja SE 2 GB x 10 133 150
8 Azja SE 2 GB x 10 x 4 444 180 Cztery równoległe transfery z jednego konta magazynu do innego

Właściwości transferu synchronizacji

Poniżej przedstawiono niektóre cechy transferu synchronizacji po stronie usługi używanego z użyciem języka DML:

  • Kod DML może przesyłać pojedynczy obiekt blob lub katalog. W przypadku transferu katalogów można użyć wzorca wyszukiwania, aby dopasować go do prefiksu obiektu blob.
  • Równoległe transfery blokowych obiektów blob. Wszystkie ukończone pod koniec procesu transferu. Poszczególne bloki obiektów blob są przenoszone równolegle.
  • Transfer jest wykonywany asynchronicznie na kliencie. Stan transferu jest okresowo dostępny za pośrednictwem wywołania zwrotnego do metody, którą można zdefiniować w obiekcie TransferContext .
  • Transfer tworzy punkty kontrolne podczas jego postępu i uwidacznia obiekt TransferCheckpoint . Obiekt reprezentuje najnowszy punkt kontrolny za pośrednictwem obiektu TransferContext . Jeśli punkt kontrolny TransferCheckpoint zostanie zapisany przed anulowaniem/przerwanym transferem, transfer można wznowić z punktu kontrolnego przez maksymalnie siedem dni. Transfer można wznowić z dowolnego punktu kontrolnego, a nie tylko najnowszego.
  • Jeśli proces transferu klienta zostanie zabity i uruchomiony ponownie bez zaimplementowania funkcji punktu kontrolnego:
    • Przed ukończeniem jakichkolwiek transferów obiektów blob transfer zostanie uruchomiony ponownie.
    • Po zakończeniu niektórych obiektów blob transfer zostanie uruchomiony ponownie tylko dla niekompletnych obiektów blob.
  • Wstrzymywanie wykonywania klienta wstrzymuje transfery.
  • Funkcja transferu obiektów blob abstrahuje klienta od przejściowych błędów. Na przykład ograniczanie konta magazynu zwykle nie powoduje niepowodzenia transferu, ale spowalnia transfer.
  • Transfery po stronie usługi mają niskie użycie zasobów klienta dla procesora CPU i pamięci, niektórych przepustowości sieci i połączeń.

Charakterystyka transferu asynchronicznego

Metodę TransferManager.CopyDirectoryAsync() można wywołać za pomocą opcji CopyMethod.ServiceSideAsyncCopy . Działa podobnie do mechanizmu transferu synchronizacji z perspektywy klienta, ale z następującymi różnicami w działaniu:

  • Szybkość transferu jest wolniejsza niż równoważny transfer synchronizacji (zazwyczaj 10 MB/s lub mniej).
  • Transfer będzie kontynuowany nawet wtedy, gdy proces klienta zakończy się.
  • Chociaż punkty kontrolne są obsługiwane, wznawianie transferu przy użyciu punktu kontrolnego TransferCheck nie jest wznawiane w czasie punktu kontrolnego, ale w bieżącym stanie transferu.

Podsumowanie testu

Usługa Azure Blob Storage obsługuje wysokie globalne szybkości transferu dzięki funkcji transferu synchronizacji po stronie usługi. Korzystanie z funkcji w aplikacjach platformy .NET jest proste przy użyciu biblioteki przenoszenia danych. Eksporty usługi Cost Management umożliwiają niezawodne kopiowanie setek gigabajtów danych na konto magazynu w dowolnym miejscu w mniej niż godzinę.