Hibaelhárítás tárolási metrikákkal
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.
Az alábbi képen a csak olvasási tranzakciók lekérésére használt API-dimenzió látható.
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.
}
}