Řešení potíží pomocí metrik úložiště

Dokončeno

Je důležité pochopit metriky úložiště, abyste věděli, které metriky se mají prozkoumat a co tyto metriky označují o stavu účtu úložiště. Pomocí metrik Azure Storage můžete analyzovat trendy využití aplikací a diagnostikovat možné problémy s účtem úložiště.

V této lekci se dozvíte o metrikách ve službě Azure Monitor, o tom, jaké informace hlásí, a o tom, jak můžete metriky, které poskytuje, použít k identifikaci problémů s tím, jak vaše aplikace používají Azure Storage.

Principy metrik

Metriky úložiště se zaznamenávají automaticky, takže nemusíte povolit žádné nastavení, abyste je mohli začít shromažďovat. Azure Storage tyto metriky generuje a jsou uložené v datové platformě Služby Azure Monitor. Azure Monitor shromažďuje metriky kapacity a metriky transakcí na úrovni účtu úložiště i na úrovni služby úložiště (například Blob Storage nebo File Storage).

Kapacitní metriky

Metriky kapacity popisují úložiště dat (například bajty uložené, bajty stále dostupné pro úložiště). Hodnoty metrik kapacity se aktualizují každý den (až 24 hodin). Časové intervaly definují časový interval, pro který se zobrazují hodnoty metrik. Podporovaný časový interval pro všechny metriky kapacity je jedna hodina (PT1H).

Transakční metriky

Metriky transakcí popisují aktivitu účtu (například počet transakcí nebo počet přečtených bajtů). Metriky transakcí se generují při každém požadavku na účet úložiště z Azure Storage do služby Azure Monitor. V případě žádné aktivity na vašem účtu úložiště nebudou v tomto období k dispozici žádná data o metrikách transakcí. Časové intervaly definují časový interval, ve který se zobrazují hodnoty metrik. Podporovaná časová zrnka pro všechny transakční metriky jsou PT1H a PT1M.

Anatomie hodnoty metriky

Hodnoty metrik můžete získat zadáním časového rozsahu, časového intervalu, oboru názvů metrik, názvu metriky a typu agregace. Tady je popis jednotlivých prvků:

Element (Prvek) Popis
Časový rozsah Časové období, které chcete zachytit (například: včera nebo poslední měsíc).
Časový interval Členitost času se odráží hodnotou metriky. (například: hodnota, která odráží jednu hodinu nebo jeden den).
Názvový prostor metriky Obor názvů metriky. Určuje, jestli se má metrika načíst na úrovni účtu úložiště, nebo na úrovni konkrétní služby úložiště (například: File Storage).
Název metriky Metrika, kterou vás zajímá (například výchozí přenos dat).
Agregace Jak chcete tuto hodnotu vypočítat. Ve většině případů zvolíte buď součet, nebo průměr.

U metrik, které podporují dimenze, můžete metriku filtrovat s požadovanou hodnotou dimenze. Dimenze jsou dvojice názvů a hodnot, které obsahují další data, která popisují hodnotu metriky. Typ ověřování je například dimenze pro transakce. Pokud vás zajímají jenom transakce, které byly autorizované pomocí klíče účtu, můžete použít dimenzi ověřování a filtrovat klíč účtu.

Dimenze ResponseType odhalí úspěšnost a míru selhání a důvody selhání, jako jsou vypršení časových limitů, omezování, chyby sítě, selhání autorizace atd. Tyto informace vám můžou poskytnout dobrý přehled o tom, proč se zhoršil výkon vašich aplikací. Například časté chyby omezování a vypršení časového limitu můžou znamenat vysokou úroveň kolizí, ke kterým dochází u omezených prostředků, a možná budete muset systém přepracovat na použití úrovně Premium místo úrovně Standard pro účty úložiště. Možná budete také muset rozložit zátěž mezi více účtů úložiště nebo zvolit jiné uspořádání kontejnerů objektů blob a tabulek, které vaše aplikace používá.

Zobrazení a analýza metrik

Hodnoty metrik můžete získat pomocí webu Azure Portal, PowerShellu, Azure CLI nebo kódu, který cílí na klientské knihovny Azure.

portál Azure

Předchozí lekce představila různé způsoby zobrazení metrik na webu Azure Portal. Pomocí Průzkumníka metrik můžete definovat prvky, které se v těchto zobrazeních zobrazují. V Průzkumníku metrik můžete zadat časový rozsah, časový interval, obor názvů metrik, metriku a agregaci pro každou hodnotu, kterou chcete analyzovat. Můžete také filtrovat podle dimenzí. Grafy založené na těchto metrikách můžete vytvářet a pak je připnout na řídicí panely, abyste k nim v budoucnu měli snadný přístup.

Následující obrázek ukazuje konfiguraci metriky, která získá celkový počet transakcí za posledních 24 hodin. Každý datový bod odráží 15 minut dat.

Screenshot that shows getting a transaction metric in Metrics Explorer.

Následující obrázek ukazuje dimenzi rozhraní API, která se používá k získání pouze transakcí čtení.

Screenshot that shows applying a dimension in Metrics Explorer.

Příkazový řádek a skripty

Metriky můžete získat spuštěním příkazů pomocí příkazového řádku nebo uspořádáním příkazů ve skriptu, který můžete později spustit jako součást naplánované úlohy (PowerShell) nebo úlohy (Azure CLI).

PowerShell

Hodnoty metrik můžete získat pomocí rutiny Get-AzMetric . Tento příklad získá celkový počet transakcí čtení pro účet úložiště.

$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

Hodnoty metrik můžete získat pomocí příkazu az monitor metrics list . Tento příklad získá celkový počet transakcí čtení pro účet úložiště.

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

Kód aplikace

Hodnoty metrik můžete získat napsáním kódu, který používá některou ze sad Azure SDK. Následující příklad používá sadu Azure SDK pro .NET k získání průměrného množství úložiště objektů blob používaného v účtu úložiště v zadaném časovém období.

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