Problembehandlung mit Speichermetriken

Abgeschlossen

Es ist wichtig, die Speichermetriken zu verstehen, damit Sie wissen, welche Metriken zu untersuchen sind und was diese Metriken über den Zustand eines Speicherkontos aussagen. Mithilfe von Azure Storage-Metriken können Sie die Verwendungstrends Ihrer Anwendungen analysieren und mögliche Probleme mit Ihrem Speicherkonto diagnostizieren.

In dieser Lerneinheit erfahren Sie etwas über Metriken in Azure Monitor, zu welchen Informationen Berichte erstellt werden und wie Sie mithilfe der bereitgestellten Metriken Probleme bei der Nutzung von Azure Storage durch Ihre Anwendungen identifizieren können.

Grundlegendes zu Metriken

Storage-Metriken werden automatisch erfasst, sodass Sie keine Einstellung aktivieren müssen, um mit der Erfassung zu beginnen. Azure Storage generiert diese Metriken, die dann in einer Azure Monitor-Datenplattform gespeichert werden. Azure Monitor sammelt Kapazitätsmetriken und Transaktionsmetriken sowohl auf der Speicherkonto- als auch auf der Speicherdienstebene (z. B. Blob Storage oder File Storage).

Kapazitätsmetriken

Kapazitätsmetriken beschreiben die Speicherung von Daten (zum Beispiel gespeicherte Bytes; Bytes, die für den Speicher noch verfügbar sind). Kapazitätsmetriken werden täglich aktualisiert (bis zu 24 Stunden). Das Aggregationsintervall definiert das Zeitintervall, für das Metrikwerte dargestellt werden. Das unterstützte Aggregationsintervall für alle Kapazitätsmetriken beträgt eine Stunde (PT1H).

Transaktionsmetriken

Transaktionsmetriken beschreiben die Kontoaktivität (zum Beispiel Anzahl der Transaktionen oder Anzahl der gelesenen Bytes). Transaktionsmetriken werden für jede Anforderung an ein Speicherkonto aus Azure Storage an Azure Monitor ausgegeben. Falls in Ihrem Speicherkonto keine Aktivität stattfindet, gibt es in diesem Zeitraum keine Daten zu Transaktionsmetriken. Das Aggregationsintervall definiert das Zeitintervall für die dargestellten Metrikwerte. Für alle Transaktionsmetriken werden die Aggregationsintervalle PT1H und PT1M unterstützt.

Die Anatomie eines Metrikwerts

Sie erhalten Metrikwerte, indem Sie einen Zeitbereich, ein Zeitintervall, einen Metriknamespace, einen Metriknamen und den Typ der Aggregation angeben. Hier ist eine Beschreibung der einzelnen Elemente:

Element BESCHREIBUNG
Uhrzeitbereich Der Zeitraum, den Sie erfassen möchten (zum Beispiel gestern oder den letzten Monat).
Zeitintervall Die Granularität der Zeit, die durch einen Metrikwert wiedergegeben wird. (Beispiel: ein Wert, der einer Stunde oder einem Tag entspricht).
Metriknamespace Der Namespace der Metrik. Er gibt an, ob eine Metrik auf der Speicherkontoebene oder auf der Ebene eines bestimmten Speicherdiensts abgerufen werden soll (z. B. File Storage).
Metrikname Die Metrik, an der Sie interessiert sind (zum Beispiel ausgehend).
Aggregation Angabe, wie dieser Wert berechnet werden soll. In den meisten Fällen wählen Sie entweder eine Summe oder einen Durchschnitt aus.

Bei Metriken mit Dimensionsunterstützung können Sie die Metrik nach dem gewünschten Dimensionswert filtern. Dimensionen sind Name/Wert-Paare, die zusätzliche Daten zur Beschreibung des Metrikwerts enthalten. Beispielsweise ist der Authentifizierungstyp eine Dimension für Transaktionen. Wenn nur Transaktionen angezeigt werden sollen, die mithilfe eines Kontoschlüssels autorisiert wurden, können Sie die Authentifizierungsdimension verwenden und nach Kontoschlüssel filtern.

Die Dimension ResponseType zeigt die Erfolgs- und Fehlerrate sowie die Fehlerursachen an, z. B. Timeouts, Drosselung, Netzwerkfehler, Autorisierungsfehler usw. Diese Informationen geben Ihnen einen guten Einblick, warum die Leistung Ihrer Anwendungen möglicherweise beeinträchtigt ist. Häufige Drosselungs- und Timeoutfehler können z. B. auf ein hohes Maß an Konflikten bei eingeschränkten Ressourcen hindeuten. Möglicherweise müssen Sie Ihr System umstellen, sodass Sie den Premium- und nicht den Standard-Tarif für Ihre Speicherkonten verwenden. Möglicherweise müssen Sie auch die Last auf mehrere Speicherkonten verteilen oder eine andere Organisation für alle Blob-Container und -Tabellen auswählen, die von Ihrer Anwendung verwendet werden.

Anzeigen und Analysieren von Metriken

Sie können Metrikwerte über das Azure-Portal, mithilfe der PowerShell, der Azure CLI oder von Code abrufen, der auf Azure-Clientbibliotheken ausgerichtet ist.

Azure-Portal

In der vorhergehenden Lerneinheit wurden verschiedene Möglichkeiten zum Anzeigen von Metriken im Azure-Portal vorgestellt. Sie können die in diesen Ansichten angezeigten Elemente mithilfe des Metrik-Explorers definieren. Im Metrik-Explorer können Sie den Zeitbereich, das Zeitintervall, den Metriknamespace, die Metrik und die Aggregation für jeden Wert angeben, den Sie analysieren möchten. Außerdem können Sie nach Dimensionen filtern. Sie können Diagramme erstellen, die auf diesen Metriken basieren, und sie dann an Dashboards anheften, um in Zukunft darauf einfach zugreifen zu können.

Die folgende Abbildung zeigt eine Metrikkonfiguration, die die Gesamtzahl der Transaktionen in den letzten 24 Stunden abruft. Jeder Datenpunkt entspricht 15 Minuten von Daten.

Screenshot that shows getting a transaction metric in Metrics Explorer.

Die folgende Abbildung zeigt die API-Dimension, mit der nur Lesevorgänge abgerufen werden.

Screenshot that shows applying a dimension in Metrics Explorer.

Befehlszeile und Skripts

Sie erhalten Metriken, indem Sie Befehle mit der Befehlszeile ausführen oder Befehle in einem Skript anordnen, das Sie später im Rahmen einer geplanten Aufgabe (PowerShell) oder eines Auftrags (Azure CLI) ausführen können.

PowerShell

Sie können Metrikwerte mithilfe des Cmdlets Get-AzMetric abrufen. In diesem Beispiel wird die Gesamtzahl der Lesevorgänge für ein Speicherkonto abgerufen.

$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

Außerdem können Sie Metrikwerte mithilfe des Befehls az monitor metrics list abrufen. In diesem Beispiel wird die Gesamtzahl der Lesevorgänge für ein Speicherkonto abgerufen.

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

Anwendungscode

Sie können Metrikwerte abrufen, indem Sie Code schreiben, der eines der Azure-SDKs verwendet. Im folgenden Beispiel wird mithilfe des Azure SDK für .NET die durchschnittliche Menge von Blobspeicher abgerufen, die in einem Speicherkonto über einen bestimmten Zeitraum genutzt wurde.

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.
    }
}