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.
  • Horyzont czasowy — 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 znacznie 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

Za pomocą usługi Cost Management możesz zaplanować eksporty szczegółów użycia platformy Azure do kont usługi Azure Storage jako obiektów blob. Wynikowe rozmiary obiektów blob mogą mieć rozmiar 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 opisano w poniższych sekcjach. W miarę kopiowania obiektów blob magazynu z jednego regionu platformy Azure do drugiego można oczekiwać podobnych wyników.

Aby przetestować wydajność, zespół przetransferował obiekty blob z kont magazynu w regionie Zachodnie stany USA do tych samych i innych regionów. Zespół mierzył prędkości od 2 GB na sekundę w tym samym regionie do 150 MB na sekundę do kont magazynu w regionie Azji Południowo-Wschodniej.

Konfiguracja testu

Aby zmierzyć szybkość transferu obiektów blob, zespół utworzył prostą aplikację konsolową platformy .NET odwołującą się do najnowszej wersji (wersja 2.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 usług transferu. Następnie utworzyli konta magazynu w wersji Standardowa w wersji 2 w wielu regionach i używają regionu źródłowego Zachodnie stany USA. 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 razy więcej rdzeni zapewnia najlepszą przepływność dla klienta testowego.
  • ServicePointManager.DefaultConnectionLimit = int. MaxValue. Ustawienie jej na maksymalną wartość skutecznie przekazuje pełną kontrolę nad równoległością transferu do ustawienia ParallelOperations powyżej.
  • TransferManager.Configurations.BlockSize = 4,194,304. Miał pewien wpływ na szybkość transferu z 4 MB, okazuje się być najlepszy do testowania.

Aby uzyskać więcej informacji i przykładowego kodu, zobacz linki w sekcji Następne kroki .

Wyniki testu

Numer testu Do regionu Obiekty blob Czas (s) MB/s Komentarze
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 transfery równoległe przy użyciu 8 kont magazynu: 4 Zachodnie do 4 Wschodnia średnia na transfer
6 EastUS 2 GB x 10 x 4 92 870 4 równoległe transfery z 1 konta magazynu do innego
5 EastUS 2G x 10 x 8 148 135 8 transferów równoległych przy użyciu 8 kont magazynu: od 4 do 4x2 Średnia wschodnia na transfer
7 Azja SE 2 GB x 10 133 150
8 Azja SE 2 GB x 10 x 4 444 180 4 równoległe transfery z 1 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 językiem DML, które są istotne dla jego użycia:

  • 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.
  • Blokowe transfery obiektów blob odbywają się równolegle. Wszystkie ukończone pod koniec procesu transferu. Poszczególne bloki obiektów blob są przesyłane 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 transferowy jest zapisywany 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 klienta transferu zostanie zabity i uruchomiony ponownie bez zaimplementowania funkcji punktu kontrolnego.
    • Przed ukończeniem jakichkolwiek transferów obiektów blob nastąpi ponowne uruchomienie transferu.
    • Po zakończeniu niektórych obiektów blob transfer jest uruchamiany ponownie tylko dla niekompletnych obiektów blob.
  • Wstrzymywanie wykonywania klienta wstrzymuje transfery.
  • Funkcja transferu obiektów blob wyodrębnia klienta z przejściowych błędów. Na przykład ograniczanie konta magazynu zwykle nie spowoduje niepowodzenia transferu, ale spowolni transfer.
  • Transfery po stronie usługi mają niskie użycie zasobów klienta dla procesora CPU i pamięci, przepustowości sieci i połączeń.

Charakterystyka transferu asynchronicznego

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

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

Podsumowanie testu

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

Następne kroki