Rozwiązywanie problemów z metrykami magazynu
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 Azure Storage, możesz analizować trendy używania aplikacji i diagnozować możliwe problemy z twoim kontem magazynowym.
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.
Omówienie 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 oraz metryki transakcji zarówno na poziomie konta magazynowania, jak i na poziomie usługi magazynowania (na przykład: Blob Storage lub File Storage).
Metryki pojemności
Metryki pojemności opisują przechowywanie danych (na przykład: bajty przechowywane, bajty nadal dostępne do przechowywania). 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 zakres czasu dla wszystkich wskaźników pojemnościowych 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ą generowane przy każdym żądaniu dotyczącym konta magazynowego w usłudze Azure Storage i przechwytywane przez Azure Monitor. W przypadku braku aktywności na koncie magazynu w danym okresie nie będą istnieć żadne dane dotyczące metryk transakcji. Ziarno czasowe definiuje interwał czasu, w którym prezentowane są 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:
Pierwiastek | Opis |
---|---|
Zakres czasu | Okres, który chcesz przechwycić (na przykład: wczoraj lub ostatni miesiąc). |
Interwał czasu | Stopień szczegółowości czasu odzwierciedlany przez wartość metryki. (na przykład: wartość, która odzwierciedla jedną godzinę lub jeden dzień). |
Przestrzeń nazw metryk | Przestrzeń nazw metryki. Określa, czy metryka ma być pobierana na poziomie konta magazynowego, czy na poziomie określonej usługi magazynowej (na przykład: Przechowywanie Plików). |
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, opisujące 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ą zapewnić dobry wgląd w to, dlaczego wydajność aplikacji może cierpieć. Na przykład częste błędy ograniczania przepustowości i przekroczenia limitu czasu mogą wskazywać na wysoki poziom współzawodnictwa o ograniczone zasoby i może być konieczne ponowne zaprojektowanie systemu, aby wykorzystać Premium zamiast Standard jako poziomu dla kont magazynu. Może być również konieczne rozłożenie obciążenia na wiele kont magazynowych lub wybranie innego sposobu organizacji dla dowolnych pojemnikó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.
Portal Azure
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.
Na poniższym obrazie przedstawiono wymiar API wykorzystywany wyłącznie do uzyskiwania transakcji odczytu.
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 pobiera się całkowitą liczbę transakcji odczytu dla konta magazynowego.
$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"
Azure CLI
Wartości metryk można uzyskać za pomocą polecenia az monitor metrics list. W tym przykładzie pobiera się łączną liczbę transakcji odczytu dla konta magazynowego.
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 .NET, aby uzyskać średnią ilość przechowywania 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.
}
}