Rozwiązywanie problemów z metrykami magazynu

Ukończone

Ważne jest, aby zrozumieć metryki magazynu, aby wiedzieć, które metryki należy zbadać i jakie metryki wskazują na stan konta magazynu. Korzystając z metryk usługi Azure Storage, możesz analizować trendy użycia aplikacji i diagnozować możliwe problemy z kontem magazynu.

W tej lekcji dowiesz się więcej o metrykach w usłudze Azure Monitor, informacjach zgłaszanych przez nią oraz o tym, jak można używać dostępnych metryk w celu identyfikowania problemów ze sposobem korzystania z usługi Azure Storage przez aplikacje.

Opis metryk

Metryki magazynu są przechwytywane automatycznie, więc nie trzeba włączać żadnego ustawienia, aby rozpocząć ich zbieranie. Usługa Azure Storage generuje te metryki i są one przechowywane na platformie danych usługi Azure Monitor. Usługa Azure Monitor zbiera metryki pojemności i metryki transakcji zarówno na poziomie konta magazynu, jak i na poziomie usługi magazynu (na przykład: Blob Storage lub File Storage).

Metryki pojemności

Metryki pojemności opisują magazyn danych (na przykład: bajty przechowywane, bajty nadal dostępne dla magazynu). Wartości metryk pojemności są odświeżane codziennie (do 24 godzin). Ziarno czasu definiuje interwał czasu, dla którego są prezentowane wartości metryk. Obsługiwany ziarno czasu dla wszystkich metryk pojemności to jedna godzina (PT1H).

Metryki transakcji

Metryki transakcji opisują działanie konta (na przykład: liczba transakcji lub liczba odczytanych bajtów). Metryki transakcji są emitowane na każdym żądaniu do konta magazynu z usługi Azure Storage do usługi Azure Monitor. W przypadku braku aktywności na koncie magazynu w danym okresie nie będą istnieć żadne dane dotyczące metryk transakcji. Ziarno czasu definiuje interwał czasu, który są prezentowane wartości metryk. Obsługiwane ziarna czasu dla wszystkich metryk transakcji to PT1H i PT1M.

Anatomia wartości metryki

Wartości metryk można uzyskać, podając zakres czasu, interwał czasu, przestrzeń nazw metryki, nazwę metryki i typ agregacji. Oto opis każdego elementu:

Element opis
Zakres czasu Okres, który chcesz przechwycić (na przykład: wczoraj lub ostatni miesiąc).
Przedział czasu Stopień szczegółowości czasu odzwierciedlany przez wartość metryki. (na przykład: wartość, która odzwierciedla jedną godzinę lub jeden dzień).
Przestrzeń nazw metryki Przestrzeń nazw metryki. Określa, czy ma być pobierana metryka na poziomie konta magazynu, czy na poziomie określonej usługi magazynu (na przykład: File Storage).
Nazwa metryki Interesująca cię metryka (na przykład: ruch wychodzący).
Agregacja Jak chcesz obliczyć wartość. W większości przypadków wybierzesz sumę lub średnią.

W przypadku metryk obsługujących wymiary można filtrować metrykę przy użyciu żądanej wartości wymiaru. Wymiary to pary nazw/wartości, które zawierają dodatkowe dane, aby opisać wartość metryki. Na przykład typ uwierzytelniania to wymiar transakcji. Jeśli chcesz zobaczyć tylko transakcje, które zostały autoryzowane przy użyciu klucza konta, możesz użyć wymiaru uwierzytelniania i filtru klucza konta.

Wymiar ResponseType ujawnia współczynnik powodzenia i niepowodzenia oraz przyczyny niepowodzenia, takie jak przekroczenia limitu czasu, ograniczanie przepustowości, błędy sieci, niepowodzenie autoryzacji itd. Te informacje mogą dać dobry wgląd w to, dlaczego wydajność aplikacji może spadać. Na przykład częste błędy ograniczania przepustowości i przekroczenia limitu czasu mogą wskazywać na wysoki poziom rywalizacji w przypadku ograniczonych zasobów i może być konieczne ponowne utworzenie architektury systemu w celu użycia warstwy Premium , a nie warstwy Standardowa dla kont magazynu. Może być również konieczne rozłożenie obciążenia na wiele kont magazynu lub wybranie innej organizacji dla wszystkich kontenerów obiektów blob i tabel używanych przez aplikację.

Wyświetlanie i analizowanie metryk

Wartości metryk można uzyskać przy użyciu witryny Azure Portal, programu PowerShell, interfejsu wiersza polecenia platformy Azure lub kodu, który jest przeznaczony dla bibliotek klienckich platformy Azure.

Azure Portal

W poprzedniej lekcji przedstawiono różne sposoby wyświetlania metryk w witrynie Azure Portal. Elementy wyświetlane w tych widokach można zdefiniować przy użyciu Eksploratora metryk. W Eksploratorze metryk można określić zakres czasu, interwał czasu, przestrzeń nazw metryki, metrykę i agregację dla każdej wartości, którą chcesz przeanalizować. Można również filtrować według wymiarów. Możesz tworzyć wykresy na podstawie tych metryk, a następnie przypinać je do pulpitów nawigacyjnych w celu uzyskania łatwego dostępu w przyszłości.

Na poniższej ilustracji przedstawiono konfigurację metryki, która pobiera łączną liczbę transakcji w ciągu ostatnich 24 godzin. Każdy punkt danych odzwierciedla 15 minut danych.

Screenshot that shows getting a transaction metric in Metrics Explorer.

Na poniższej ilustracji przedstawiono wymiar interfejsu API używany do pobierania tylko transakcji odczytu.

Screenshot that shows applying a dimension in Metrics Explorer.

Wiersz polecenia i skrypty

Metryki można uzyskać, uruchamiając polecenia za pomocą wiersza polecenia lub rozmieszczając polecenia w skrypcie, który można uruchomić później w ramach zaplanowanego zadania (programu PowerShell) lub zadania (interfejs wiersza polecenia platformy Azure).

PowerShell

Wartości metryk można uzyskać przy użyciu polecenia cmdlet Get-AzMetric . W tym przykładzie jest pobierana łączna liczba transakcji odczytu dla konta magazynu.

$resourceId = "<resource-ID>"
$dimFilter = [String](New-AzMetricFilter -Dimension ApiName -Operator eq -Value "GetBlob" 3> $null)
Get-AzMetric -ResourceId $resourceId -MetricName Transactions -TimeGrain 01:00:00 -MetricFilter $dimFilter -AggregationType "Total"

Interfejs wiersza polecenia platformy Azure

Wartości metryk można uzyskać za pomocą polecenia az monitor metrics list . W tym przykładzie jest pobierana łączna liczba transakcji odczytu dla konta magazynu.

az monitor metrics list --resource <resource-ID> --metric "Transactions" --interval PT1H --filter "ApiName eq 'GetBlob' " --aggregation "Total" 

Kod aplikacji

Wartości metryk można uzyskać, pisząc kod, który używa dowolnego zestawu SDK platformy Azure. W poniższym przykładzie użyto zestawu Azure SDK dla platformy .NET , aby uzyskać średnią ilość magazynu obiektów blob używanych na koncie magazynu w określonym przedziale czasu.

public static async Task ReadStorageMetricValueTest()
{
    // Resource ID for blob storage
    var resourceId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}/blobServices/default";

    var subscriptionId = "<subscription-ID}";
    var tenantId = "<tenant-ID>";
    var applicationId = "<application-ID>";
    var accessKey = "<accessKey>";

    MonitorManagementClient readOnlyClient = AuthenticateWithReadOnlyClient(tenantId, applicationId, accessKey, subscriptionId).Result;

    Microsoft.Azure.Management.Monitor.Models.Response Response;

    string startDate = DateTime.Now.AddHours(-3).ToUniversalTime().ToString("o");
    string endDate = DateTime.Now.ToUniversalTime().ToString("o");
    string timeSpan = startDate + "/" + endDate;

    ODataQuery<MetadataValue> odataFilterMetrics = new ODataQuery<MetadataValue>(
        string.Format("BlobType eq '{0}'", "BlockBlob"));

    Response = readOnlyClient.Metrics.List(
                    resourceUri: resourceId,
                    timespan: timeSpan,
                    interval: System.TimeSpan.FromHours(1),
                    metricnames: "BlobCapacity",
                    odataQuery: odataFilterMetrics,
                    aggregation: "Average",
                    resultType: ResultType.Data);

    foreach (var metric in Response.Value)
    {
       // process value here.
    }
}