Felsökning med lagringsmått

Slutförd

Det är viktigt att förstå lagringsmått så att du vet vilka mått som ska undersökas och vad dessa mått anger om tillståndet för ett lagringskonto. Med hjälp av Azure Storage-mått kan du analysera dina programs användningstrender och diagnostisera eventuella problem med ditt lagringskonto.

I den här lektionen får du lära dig mer om mått i Azure Monitor, vilken information den rapporterar om och hur du kan använda måtten för att identifiera problem med hur dina program använder Azure Storage.

Förstå mått

Lagringsmått samlas in automatiskt, så du behöver inte aktivera någon typ av inställning för att börja samla in dem. Azure Storage genererar dessa mått och lagras på en Azure Monitor-dataplattform. Azure Monitor samlar in kapacitetsmått och transaktionsmått på både lagringskontonivå och lagringstjänstnivå (till exempel Blob Storage eller Fillagring).

Kapacitetsmått

Kapacitetsmått beskriver datalagring (till exempel: lagrade byte, byte som fortfarande är tillgängliga för lagring). Kapacitetsmåttvärden uppdateras dagligen (upp till 24 timmar). Tidsintervallet definierar det tidsintervall för vilket måttvärden visas. Tidsintervallet som stöds för alla kapacitetsmått är en timme (PT1H).

Transaktionsmått

Transaktionsmått beskriver kontoaktivitet (till exempel antal transaktioner eller antal lästa byte). Transaktionsmått genereras vid varje begäran till ett lagringskonto från Azure Storage till Azure Monitor. Om det inte finns någon aktivitet på ditt lagringskonto kommer det inte att finnas några data om transaktionsmått under perioden. Tidsintervallet definierar tidsintervallet som måttvärden visas. De tidsintervall som stöds för alla transaktionsmått är PT1H och PT1M.

Ett måttvärdes anatomi

Du kan hämta måttvärden genom att ange ett tidsintervall, tidsintervall, måttnamnområde, måttnamn och typen av sammansättning. Här är en beskrivning av varje element:

Element Description
Tidsintervall Den tidsperiod som du vill samla in (till exempel igår eller den senaste månaden).
Tidsintervall Tidskornigheten som återspeglas av ett måttvärde. (till exempel ett värde som återspeglar en timme eller en dag).
Namnområde för mått Måttets namnområde. Detta anger om du vill hämta ett mått på lagringskontonivå eller på nivån för en specifik lagringstjänst (till exempel Fillagring).
Måttnamn Det mått som du är intresserad av (till exempel utgående).
Aggregering Hur du vill att värdet ska beräknas. I de flesta fall väljer du antingen en summa eller ett genomsnitt.

För mått som stöder dimensioner kan du filtrera måttet med önskat dimensionsvärde. Dimensioner är namn/värde-par som innehåller ytterligare data för att beskriva måttvärdet. Till exempel är autentiseringstypen en dimension för transaktioner. Om du bara vill se transaktioner som har auktoriserats med hjälp av en kontonyckel kan du använda autentiseringsdimensionen och filtrera på kontonyckeln.

ResponseType-dimensionen visar framgångs- och felfrekvensen och orsakerna till fel, till exempel tidsgränser, begränsning, nätverksfel, auktoriseringsfel och så vidare. Den här informationen kan ge dig en bra inblick i varför dina programs prestanda kan vara bristande. Till exempel kan frekventa begränsnings- och timeoutfel indikera en hög konkurrensnivå för begränsade resurser, och du kan behöva skapa systemet på nytt för att använda Premium i stället för standardnivån för dina lagringskonton. Du kan också behöva sprida belastningen på flera lagringskonton eller välja en annan organisation för blobcontainrar och tabeller som programmet använder.

Visa och analysera mått

Du kan hämta måttvärden med hjälp av Azure-portalen, PowerShell, Azure CLI eller med hjälp av kod som riktar sig till Azure-klientbibliotek.

Azure Portal

Den föregående lektionen visade olika sätt att visa mått i Azure-portalen. Du kan definiera de element som visas i dessa vyer med hjälp av Metrics Explorer. I Metrics Explorer kan du ange tidsintervall, tidsintervall, måttnamnområde, mått och aggregering för varje värde som du vill analysera. Du kan också filtrera efter dimensioner. Du kan skapa diagram baserat på dessa mått och sedan fästa dem på instrumentpaneler för enkel åtkomst i framtiden.

Följande bild visar en måttkonfiguration som hämtar det totala antalet transaktioner under de senaste 24 timmarna. Varje datapunkt visar 15 minuters data.

Screenshot that shows getting a transaction metric in Metrics Explorer.

Följande bild visar API-dimensionen som används för att endast hämta skrivskyddade transaktioner.

Screenshot that shows applying a dimension in Metrics Explorer.

Kommandorad och skript

Du kan hämta mått genom att köra kommandon med kommandoraden eller genom att ordna kommandon i ett skript som du kan köra senare som en del av en schemalagd aktivitet (PowerShell) eller ett jobb (Azure CLI).

PowerShell

Du kan hämta måttvärden med hjälp av cmdleten Get-AzMetric . Det här exemplet hämtar det totala antalet lästransaktioner för ett lagringskonto.

$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

Du kan hämta måttvärden med kommandot az monitor metrics list . Det här exemplet hämtar det totala antalet lästransaktioner för ett lagringskonto.

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

Programkod

Du kan hämta måttvärden genom att skriva kod som använder någon av Azure SDK:erna. I följande exempel används Azure SDK för .NET för att hämta den genomsnittliga mängden Blob Storage som används i ett lagringskonto under en angiven tidsperiod.

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