Hibaelhárítás tárolási metrikákkal

Befejeződött

Fontos megérteni a tárolási metrikákat, hogy tudja, mely metrikákat kell megvizsgálnia, és mit jeleznek ezek a metrikák a tárfiók állapotáról. Az Azure Storage-metrikák használatával elemezheti az alkalmazások használati trendjeit, és diagnosztizálhatja a tárfiókkal kapcsolatos lehetséges problémákat.

Ebben a leckében megismerheti az Azure Monitor metrikáit, a jelentésekben szereplő információkat, valamint az általa biztosított metrikákat az alkalmazások Azure Storage-beli használatának problémáinak azonosításához.

Metrikák ismertetése

A rendszer automatikusan rögzíti a tárolási metrikákat, így nem kell engedélyeznie semmilyen beállítást a begyűjtésük megkezdéséhez. Az Azure Storage létrehozza ezeket a metrikákat, és egy Azure Monitor-adatplatformon tárolja őket. Az Azure Monitor a kapacitásmetrikákat és a tranzakciós metrikákat a tárfiók szintjén és a tárolási szolgáltatási szinten is gyűjti (például: Blob Storage vagy File Storage).

Kapacitásmetrikák

A kapacitásmetrikák az adattárolást írják le (például: tárolt bájtok, tárterülethez továbbra is elérhető bájtok). A kapacitásmetrika értékei naponta frissülnek (legfeljebb 24 óra). Az időérték határozza meg azt az időintervallumot, amelynél a metrikák értékei megjelennek. Az összes kapacitásmetrika támogatott időfelbontása egy óra (PT1H).

Tranzakciómetrikák

A tranzakciómetrikák a fióktevékenységet írják le (például: tranzakciók száma vagy olvasási bájtok száma). A tranzakciómetrikák az Azure Storage-ból az Azure Monitorba irányuló tárfiókra irányuló minden kéréskor ki lesznek bocsátva. Ha nincs tevékenység a tárfiókban, az időszak tranzakciómetrikáiról nem lesznek adatok. Az időfelbontás határozza meg a metrikaértékek megjelenítési időközét. Az összes tranzakciómetrika támogatott időszemcséi a PT1H és a PT1M.

Egy metrikaérték anatómiája

A metrikaértékek lekéréséhez meg kell adnia az időtartományt, az időintervallumot, a metrikanévteret, a metrikanevet és az összesítés típusát. Az egyes elemek leírása:

Elem Leírás
Időtartomány A rögzíteni kívánt időszak (például tegnap vagy az elmúlt hónap).
Időintervallum A metrikaérték által tükrözött idő részletessége. (például: egy órát vagy egy napot tükröző érték).
Metrikai névtér A metrika névtere. Ez azt határozza meg, hogy egy metrikát a tárfiók szintjén vagy egy adott tárolási szolgáltatás szintjén (például: File Storage) kell-e lekérni.
Metrika neve A metrika, amely érdekli (például: kimenő forgalom).
Összesítés Hogyan szeretné kiszámítani ezt az értéket. A legtöbb esetben egy összeget vagy egy átlagot kell választania.

A dimenziókat támogató metrikák esetében a kívánt dimenzióértékkel szűrheti a metrikát. A dimenziók olyan név-érték párok, amelyek további adatokat hordoznak a metrikaérték leírásához. A hitelesítési típus például a tranzakciók dimenziója. Ha csak a fiókkulcs használatával engedélyezett tranzakciókat szeretné látni, használhatja a hitelesítési dimenziót, és szűrhet a fiókkulcsra.

A ResponseType dimenzió megmutatja a sikeresség és a sikertelenség arányát, valamint a hiba okait, például időtúllépéseket, szabályozást, hálózati hibákat, engedélyezési hibákat stb. Ezen adatok alapján jól átláthatja az alkalmazás esetleg gyenge teljesítményének okát. A gyakori szabályozási és időtúllépési hibák például a korlátozott erőforrások magas szintű versengését jelezhetik, és előfordulhat, hogy újra kell építenie a rendszert a Prémium szint használatára a tárfiókok standard szintje helyett. Szükség lehet a terhelés több tárfiók közötti elosztására, vagy más szervezési mód választására az alkalmazás által használt blobtárolókhoz és táblákhoz.

Metrikák megtekintése és elemzése

A metrikaértékeket az Azure Portal, a PowerShell, az Azure CLI vagy az Azure-ügyfélkódtárakat megcélzó kód használatával szerezheti be.

Azure Portal

Az előző egység különböző módszereket mutatott be a metrikák megtekintésére az Azure Portalon. Az ezekben a nézetekben megjelenő elemeket a Metrics Explorerrel határozhatja meg. A Metrics Explorerben megadhatja az egyes elemezni kívánt értékek időtartományát, időintervallumát, metrikanévterét, metrikáit és összesítését. Dimenziók alapján is szűrhet. Létrehozhat diagramokat ezek alapján a metrikák alapján, majd rögzítheti őket az irányítópultokon a jövőbeni könnyű hozzáférés érdekében.

Az alábbi képen egy metrikakonfiguráció látható, amely az elmúlt 24 órában végrehajtott tranzakciók teljes számát kapja meg. Minden adatpont 15 percnyi adatot tükröz.

Screenshot that shows getting a transaction metric in Metrics Explorer.

Az alábbi képen a csak olvasási tranzakciók lekérésére használt API-dimenzió látható.

Screenshot that shows applying a dimension in Metrics Explorer.

Parancssor és szkriptek

A metrikákat úgy szerezheti be, hogy parancsokat futtat a parancssorban, vagy olyan parancsokat szervez egy szkriptben, amelyet később egy ütemezett feladat (PowerShell) vagy feladat (Azure CLI) részeként futtathat.

PowerShell

A metrikaértékeket a Get-AzMetric parancsmaggal szerezheti be. Ez a példa lekéri egy tárfiók olvasási tranzakcióinak teljes számá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

A metrikaértékeket az az monitor metrics list paranccsal szerezheti be. Ez a példa lekéri egy tárfiók olvasási tranzakcióinak teljes számát.

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

Alkalmazáskód

A metrikaértékeket az Azure SDK-k bármelyikét használó kód megírásával szerezheti be. Az alábbi példa a .NET-hez készült Azure SDK-t használja a tárfiókban használt blobtárolók átlagos mennyiségének lekéréséhez egy adott időszakban.

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