Memecahkan masalah dengan metrik penyimpanan

Selesai

Sangat penting untuk memahami metrik penyimpanan sehingga Anda tahu metrik mana yang harus diperiksa dan apa yang ditunjukkan oleh metrik ini tentang status akun penyimpanan. Dengan menggunakan metrik Azure Storage, Anda dapat menganalisis tren penggunaan aplikasi dan mendiagnosis kemungkinan masalah dengan akun penyimpanan Anda.

Di pelajaran ini, Anda akan mempelajari tentang metrik di Azure Monitor, informasi apa yang dilaporkan Azure Monitor, dan cara Anda dapat menggunakan metrik yang disediakan Azure Monitor untuk mengidentifikasi masalah dengan cara aplikasi Anda menggunakan Azure Storage.

Memahami metrik

Metrik penyimpanan diambil secara otomatis, sehingga Anda tidak perlu mengaktifkan pengaturan apa pun untuk mulai mengumpulkannya. Azure Storage menghasilkan metrik ini, dan disimpan di platform data Azure Monitor. Azure Monitor mengumpulkan metrik kapasitas dan metrik transaksi di tingkat akun penyimpanan dan tingkat layanan penyimpanan (misalnya: Penyimpanan Blob atau Penyimpanan File).

Metrik kapasitas

Metrik kapasitas menjelaskan penyimpanan data (misalnya: byte yang disimpan, byte masih tersedia untuk penyimpanan). Nilai metrik kapasitas diperbarui setiap hari (hingga 24 jam). Butir waktu menentukan interval waktu yang nilai metriknya disajikan. Butir waktu yang didukung untuk semua metrik kapasitas adalah satu jam (PT1H).

Metrik transaksi

Metrik transaksi menjelaskan aktivitas akun (misalnya: jumlah transaksi atau jumlah byte yang dibaca). Metrik transaksi dikeluarkan pada setiap permintaan ke akun penyimpanan dari Azure Storage ke Azure Monitor. Jika tidak ada aktivitas di akun penyimpanan, tidak akan ada data metrik transaksi dalam periode tersebut. Butir waktu menentukan interval waktu yang nilai metriknya disajikan. Butiran waktu yang didukung untuk semua metrik transaksi adalah PT1H dan PT1M.

Anatomi nilai metrik

Anda bisa mendapatkan nilai metrik dengan menyediakan rentang waktu, interval waktu, namespace metrik, nama metrik, dan jenis agregasi. Berikut penjelasan masing-masing elemen:

Elemen Deskripsi
Rentang waktu Periode waktu yang ingin Anda ambil (misalnya: kemarin atau sebulan terakhir).
Interval Waktu Granuralitas waktu yang dicerminkan oleh nilai metrik. (misalnya: nilai yang mencerminkan satu jam atau satu hari).
Namespace metrik Namespace metrik. Ini menentukan apakah akan mendapatkan metrik di tingkat akun penyimpanan, atau pada tingkat layanan penyimpanan tertentu (misalnya: Penyimpanan File).
Nama metrik Metrik yang Anda minati (misalnya: egress).
Agregasi Bagaimana Anda ingin nilai tersebut dihitung. Dalam kebanyakan kasus, Anda akan memilih jumlah atau rata-rata.

Untuk metrik yang mendukung dimensi, Anda dapat memfilter metrik dengan nilai dimensi yang dikehendaki. Dimensi adalah pasangan nama/nilai yang membawa data tambahan untuk menjelaskan nilai metrik. Misalnya, jenis autentikasi adalah dimensi untuk transaksi. Jika Anda hanya tertarik untuk melihat transaksi yang diotorisasi dengan menggunakan kunci akun, Anda dapat menggunakan dimensi autentikasi dan memfilter kunci akun.

Dimensi ResponseType memperlihatkan tingkat keberhasilan dan kegagalan, serta alasan kegagalan, seperti batas waktu, pembatasan, kesalahan jaringan, kegagalan otorisasi, dan sebagainya. Informasi ini dapat memberi Anda wawasan yang baik tentang alasan penurunan performa. Misalnya, kesalahan pembatasan waktu dan batas waktu yang sering dapat menunjukkan tingkat pertentangan yang tinggi yang terjadi untuk sumber daya yang terbatas, dan Anda mungkin perlu merancang ulang sistem Anda untuk menggunakan tingkat Premium daripada Standar untuk akun penyimpanan Anda. Anda mungkin juga perlu menyebarkan beban di beberapa akun penyimpanan atau memilih organisasi lain untuk setiap kontainer blob dan tabel yang digunakan aplikasi Anda.

Melihat dan menganalisis metrik

Anda bisa mendapatkan nilai metrik dengan menggunakan portal Microsoft Azure, PowerShell, Azure CLI, atau dengan menggunakan kode yang menargetkan pustaka klien Azure.

Portal Azure

Pelajaran sebelumnya menyajikan berbagai cara untuk melihat metrik di portal Microsoft Azure. Anda dapat menentukan elemen yang muncul dalam tampilan tersebut dengan menggunakan Penjelajah Metrik. Di Penjelajah Metrik, Anda dapat menentukan rentang waktu, interval waktu, namespace metrik, metrik, dan agregasi untuk setiap nilai yang ingin Anda analisis. Anda juga dapat memfilter berdasarkan dimensi. Anda dapat membuat bagan berdasarkan metrik ini, lalu menyematkannya ke dasbor untuk memudahkan akses di masa mendatang.

Gambar berikut menunjukkan konfigurasi metrik yang mendapatkan jumlah total transaksi dalam 24 jam terakhir. Setiap poin data mencerminkan 15 menit data.

Screenshot that shows getting a transaction metric in Metrics Explorer.

Gambar berikut menunjukkan dimensi API yang digunakan untuk mendapatkan transaksi baca saja.

Screenshot that shows applying a dimension in Metrics Explorer.

Baris perintah dan skrip

Anda bisa mendapatkan metrik dengan menjalankan perintah dengan baris perintah atau dengan mengatur perintah dalam skrip yang dapat Anda jalankan nanti sebagai bagian dari tugas terjadwal (PowerShell) atau pekerjaan (Azure CLI).

PowerShell

Anda bisa mendapatkan nilai metrik dengan menggunakan cmdlet Get-AzMetric. Contoh ini mendapatkan jumlah total transaksi pembacaan untuk akun penyimpanan.

$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

Anda bisa mendapatkan nilai metrik dengan menggunakan perintah az monitor metrics list. Contoh ini mendapatkan jumlah total transaksi pembacaan untuk akun penyimpanan.

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

Kode aplikasi

Anda bisa mendapatkan nilai metrik dengan menulis kode yang menggunakan salah satu Azure SDK. Contoh berikut menggunakan Azure SDK untuk .NET guna mendapatkan jumlah rata-rata penyimpanan Blob yang digunakan dalam akun penyimpanan selama jangka waktu tertentu.

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