Problemen oplossen met metrische gegevens voor opslag

Voltooid

Het is belangrijk om inzicht te hebben in metrische opslaggegevens, zodat u weet welke metrische gegevens moeten worden onderzocht en wat deze metrische gegevens aangeven over de status van een opslagaccount. Metrische gegevens van Azure Storage kunt u de gebruikstrends van uw toepassingen analyseren en mogelijke problemen met uw opslagaccount vaststellen.

In deze les leert u meer over metrische gegevens in Azure Monitor, over welke informatie deze rapporteert en hoe u de metrische gegevens kunt gebruiken die het biedt om problemen te identificeren met de wijze waarop uw toepassingen Azure Storage gebruiken.

Metrische gegevens begrijpen

Metrische gegevens voor opslag worden automatisch vastgelegd, zodat u geen enkele instelling hoeft in te schakelen om ze te verzamelen. Azure Storage genereert deze metrische gegevens en ze worden opgeslagen in een Azure Monitor-gegevensplatform. Azure Monitor verzamelt metrische gegevens over capaciteit en metrische transactiegegevens op zowel het niveau van het opslagaccount als het opslagserviceniveau (bijvoorbeeld: Blob Storage of File Storage).

Metrische gegevens over capaciteit

Metrische capaciteitsgegevens beschrijven gegevensopslag (bijvoorbeeld: bytes die zijn opgeslagen, bytes die nog beschikbaar zijn voor opslag). Waarden voor metrische capaciteit worden dagelijks vernieuwd (maximaal 24 uur). De tijdsinterval definieert het tijdsinterval waarvoor metrische waarden worden weergegeven. De ondersteunde tijdsinterval voor alle metrische capaciteitsgegevens is één uur (PT1H).

Metrische gegevens voor transacties

Metrische gegevens over transacties beschrijven accountactiviteit (bijvoorbeeld het aantal transacties of het aantal bytes dat is gelezen). Metrische gegevens over transacties worden verzonden voor elke aanvraag naar een opslagaccount van Azure Storage naar Azure Monitor. In het geval van geen activiteit in uw opslagaccount zijn er in de periode geen gegevens over metrische gegevens over transacties. De tijdsinterval definieert het tijdsinterval dat metrische waarden worden weergegeven. De ondersteunde tijdsintervals voor alle metrische gegevens over transacties zijn PT1H en PT1M.

De anatomie van een metrische waarde

U kunt metrische waarden ophalen door een tijdsbereik, tijdsinterval, metrische naamruimte, metrische naam en het type aggregatie op te geven. Hier volgt een beschrijving van elk element:

Element Beschrijving
Tijdsbereik De periode die u wilt vastleggen (bijvoorbeeld: gisteren of de afgelopen maand).
Tijdsinterval De granulariteit van de tijd die wordt weerspiegeld door een metrische waarde. (bijvoorbeeld: een waarde die één uur of één dag weergeeft).
Metrische naamruimte De naamruimte van de metrische waarde. Hiermee geeft u op of u een metrische waarde wilt ophalen op het niveau van het opslagaccount of op het niveau van een specifieke opslagservice (bijvoorbeeld: File Storage).
Naam van meetwaarde De metrische gegevens waarin u geïnteresseerd bent (bijvoorbeeld uitgaand verkeer).
Statistische functie Hoe u die waarde wilt berekenen. In de meeste gevallen kiest u een som of een gemiddelde.

Voor metrische gegevens die dimensies ondersteunen, kunt u de metrische waarde filteren met de gewenste dimensiewaarde. Dimensies zijn naam-/waardeparen die aanvullende gegevens bevatten om de metrische waarde te beschrijven. Verificatietype is bijvoorbeeld een dimensie voor transacties. Als u alleen transacties wilt zien die zijn geautoriseerd met behulp van een accountsleutel, kunt u de verificatiedimensie gebruiken en filteren op de accountsleutel.

De dimensie ResponseType toont het succes- en foutpercentage, en de redenen voor fouten, zoals time-outs, beperking, netwerkfouten, autorisatiefouten, enzovoort. Aan de hand van deze informatie kunt u een goed inzicht krijgen in de oorzaak van verminderde prestaties van uw toepassingen. Frequente beperkings- en time-outfouten kunnen bijvoorbeeld duiden op een hoog conflictniveau voor beperkte resources. Mogelijk moet u uw systeem opnieuw ontwerpen voor het gebruik van de Premium-laag in plaats van de Standard-laag voor uw opslagaccounts. Mogelijk moet u ook de belasting over meerdere opslagaccounts verdelen of een andere organisatie selecteren voor Blob-containers en tabellen die door uw toepassing worden gebruikt.

Metrische gegevens weergeven en analyseren

U kunt metrische waarden ophalen met behulp van Azure Portal, PowerShell, Azure CLI of met behulp van code die is gericht op Azure-clientbibliotheken.

Azure Portal

In de vorige les ziet u verschillende manieren om metrische gegevens weer te geven in Azure Portal. U kunt de elementen definiëren die in deze weergaven worden weergegeven met Behulp van Metrics Explorer. In Metrics Explorer kunt u het tijdsbereik, tijdsinterval, metrische naamruimte, metrische gegevens en aggregatie opgeven voor elke waarde die u wilt analyseren. U kunt ook filteren op dimensies. U kunt grafieken maken op basis van deze metrische gegevens en deze vervolgens vastmaken aan dashboards voor eenvoudige toegang in de toekomst.

In de volgende afbeelding ziet u een metrische configuratie waarmee het totale aantal transacties in de afgelopen 24 uur wordt opgehaald. Elk gegevenspunt weerspiegelt 15 minuten aan gegevens.

Screenshot that shows getting a transaction metric in Metrics Explorer.

In de volgende afbeelding ziet u de API-dimensie die wordt gebruikt om alleen leestransacties op te halen.

Screenshot that shows applying a dimension in Metrics Explorer.

Opdrachtregel en scripts

U kunt metrische gegevens ophalen door opdrachten uit te voeren met de opdrachtregel of door opdrachten te rangschikken in een script dat u later kunt uitvoeren als onderdeel van een geplande taak (PowerShell) of taak (Azure CLI).

PowerShell

U kunt metrische waarden ophalen met behulp van de Get-AzMetric-cmdlet . In dit voorbeeld wordt het totale aantal leestransacties voor een opslagaccount ophaalt.

$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

U kunt metrische waarden ophalen met behulp van de opdracht az monitor metrics list . In dit voorbeeld wordt het totale aantal leestransacties voor een opslagaccount ophaalt.

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

Toepassingscode

U kunt metrische waarden ophalen door code te schrijven die gebruikmaakt van een van de Azure SDK's. In het volgende voorbeeld wordt de Azure SDK voor .NET gebruikt om de gemiddelde hoeveelheid Blob-opslag op te halen die in een opslagaccount wordt gebruikt gedurende een opgegeven periode.

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