Depolama ölçümleriyle sorun giderme

Tamamlandı

Hangi ölçümleri inceleyebileceğinizi ve bu ölçümlerin depolama hesabının durumu hakkında neleri gösterdiğini bilmeniz için depolama ölçümlerini anlamanız önemlidir. Azure Depolama ölçümlerini kullanarak uygulamalarınızın kullanım eğilimlerini analiz edebilir ve depolama hesabınızla ilgili olası sorunları tanılayabilirsiniz.

Bu ünitede Azure İzleyici'deki ölçümler, hangi bilgiler hakkında rapor verdiği ve sağladığı ölçümleri kullanarak uygulamalarınızın Azure Depolama kullanma şekliyle ilgili sorunları nasıl belirleyebileceğinizi öğreneceksiniz.

Ölçümleri anlama

Depolama ölçümler otomatik olarak yakalanır, bu nedenle bunları toplamaya başlamak için herhangi bir ayarı etkinleştirmeniz gerekmez. Azure Depolama bu ölçümleri oluşturur ve bir Azure İzleyici veri platformunda depolanır. Azure İzleyici, kapasite ölçümlerini ve işlem ölçümlerini hem depolama hesabı düzeyinde hem de depolama hizmeti düzeyinde toplar (örneğin: Blob Depolama veya Dosya Depolama).

Kapasite ölçümleri

Kapasite ölçümleri veri depolamayı açıklar (örneğin: depolanan baytlar, depolama için kullanılabilir baytlar). Kapasite ölçümleri değerleri günlük olarak yenilenir (24 saate kadar). Zaman dilimi, ölçüm değerlerinin sunulduğu zaman aralığını tanımlar. Tüm kapasite ölçümleri için desteklenen zaman dilimi bir saattir (PT1H).

İşlem ölçümleri

İşlem ölçümleri hesap etkinliğini açıklar (örneğin: işlem sayısı veya okunan bayt sayısı). İşlem ölçümleri, Azure Depolama'den Azure İzleyici'ye bir depolama hesabına yapılan her istekte gösterilir. Depolama hesabınızda etkinlik olmaması durumunda, dönem içinde işlem ölçümleriyle ilgili veri olmaz. Zaman dilimi, ölçüm değerlerinin sunulduğu zaman aralığını tanımlar. Tüm işlem ölçümleri için desteklenen zaman dilimleri PT1H ve PT1M'dir.

Ölçüm değerinin anatomisi

Bir zaman aralığı, zaman aralığı, ölçüm ad alanı, ölçüm adı ve toplama türü sağlayarak ölçüm değerlerini alabilirsiniz. Her öğenin açıklaması aşağıdadır:

Öğe Açıklama
Zaman aralığı Yakalamak istediğiniz süre (örneğin, dün veya geçen ay).
Zaman aralığı Bir ölçüm değeri tarafından yansıtılan zamanın ayrıntı düzeyi. (örneğin: bir saati veya bir günü yansıtan bir değer).
Ölçüm ad alanı Ölçümün ad alanı. Bu, bir ölçümün depolama hesabı düzeyinde mi yoksa belirli bir depolama hizmeti düzeyinde mi alınmayacağını belirtir (örneğin: Dosya Depolama).
Ölçüm adı İlgilendiğiniz ölçüm (örneğin: çıkış).
Toplama Bu değerin nasıl hesaplanmasını istiyorsunuz? Çoğu durumda bir toplam veya ortalama seçersiniz.

Boyutları destekleyen ölçümler için ölçümü istediğiniz boyut değeriyle filtreleyebilirsiniz. Boyutlar, ölçüm değerini açıklamak için ek veri taşıyan ad/değer çiftleridir. Örneğin, kimlik doğrulama türü işlemler için bir boyutdur. Yalnızca hesap anahtarı kullanılarak yetkilendirilmiş işlemleri görmek istiyorsanız, kimlik doğrulama boyutunu kullanabilir ve hesap anahtarına göre filtreleyebilirsiniz.

ResponseType boyutu başarı ve başarısızlık oranını ve zaman aşımları, azaltma, ağ hataları, yetkilendirme hatası vb. hatanın nedenlerini gösterir. Bu bilgiler, size uygulamalarınızda neden performans sorunuyla karşılaşıldığına ilişkin içgörü sağlayabilir. Örneğin, sık sık azaltma ve zaman aşımı hataları sınırlı kaynaklarda yüksek düzeyde çekişme olduğunu gösterebilir ve sisteminizi depolama hesaplarınız için Standart katman yerine Premium kullanmak üzere yeniden mimari oluşturmanız gerekebilir. Yükü birden fazla depolama hesabına dağıtabilir veya uygulamanızın kullandığı tüm blob kapsayıcıları ve tablolar için farklı bir kuruluş seçebilirsiniz.

Ölçümleri görüntüleme ve analiz etme

Ölçüm değerlerini Azure portalını, PowerShell'i, Azure CLI'yı veya Azure istemci kitaplıklarını hedefleyen kodu kullanarak alabilirsiniz.

Azure portalı

Önceki ünitede Azure portalında ölçümleri görüntülemenin farklı yolları sunulmuştur. Ölçüm Gezgini'ni kullanarak bu görünümlerde görünen öğeleri tanımlayabilirsiniz. Ölçüm Gezgini'nde analiz etmek istediğiniz her değer için zaman aralığını, zaman aralığını, ölçüm ad alanını, ölçümü ve toplamayı belirtebilirsiniz. Boyutlara göre de filtreleyebilirsiniz. Bu ölçümleri temel alan grafikler oluşturabilir ve sonra gelecekte kolay erişim için bunları panolara sabitleyebilirsiniz.

Aşağıdaki görüntüde, son 24 saat içindeki toplam işlem sayısını alan bir ölçüm yapılandırması gösterilmektedir. Her veri noktası 15 dakikalık verileri yansıtır.

Screenshot that shows getting a transaction metric in Metrics Explorer.

Aşağıdaki görüntüde yalnızca okuma işlemlerini almak için kullanılan API boyutu gösterilmektedir.

Screenshot that shows applying a dimension in Metrics Explorer.

Komut satırı ve betikler

Komutları komut satırıyla çalıştırarak veya daha sonra zamanlanmış bir görevin (PowerShell) veya işin (Azure CLI) parçası olarak çalıştırabileceğiniz bir betikte komutlar düzenleyerek ölçümler alabilirsiniz.

PowerShell

Get-AzMetric cmdlet'ini kullanarak ölçüm değerlerini alabilirsiniz. Bu örnek, depolama hesabı için toplam okuma işlemi sayısını alır.

$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

az monitor metrics list komutunu kullanarak ölçüm değerlerini alabilirsiniz. Bu örnek, depolama hesabı için toplam okuma işlemi sayısını alır.

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

Uygulama kodu

Azure SDK'larından herhangi birini kullanan kod yazarak ölçüm değerlerini alabilirsiniz. Aşağıdaki örnek, bir depolama hesabında belirtilen süre boyunca kullanılan ortalama Blob depolama miktarını elde etmek için .NET için Azure SDK'sını kullanır.

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