Resolver problemas com métricas de armazenamento

Concluído

É importante entender as métricas de armazenamento para saber quais métricas examinar e o que essas métricas indicam sobre o estado de uma conta de armazenamento. Usando métricas de Armazenamento do Azure, você pode analisar as tendências de uso de seus aplicativos e diagnosticar possíveis problemas com sua conta de armazenamento.

Nesta unidade, você aprenderá sobre métricas no Azure Monitor, quais informações ele relata e como você pode usar as métricas que ele fornece para identificar problemas com a forma como seus aplicativos estão usando o Armazenamento do Azure.

Compreender métricas

As métricas de armazenamento são capturadas automaticamente, portanto, você não precisa habilitar nenhum tipo de configuração para começar a coletá-las. O Armazenamento do Azure gera essas métricas e elas são armazenadas em uma plataforma de dados do Azure Monitor. O Azure Monitor coleta métricas de capacidade e métricas de transação no nível da conta de armazenamento e no nível de serviço de armazenamento (por exemplo: Armazenamento de Blob ou Armazenamento de Arquivos).

Métricas de capacidade

As métricas de capacidade descrevem o armazenamento de dados (por exemplo: bytes armazenados, bytes ainda disponíveis para armazenamento). Os valores das métricas de capacidade são atualizados diariamente (até 24 horas). O grão de tempo define o intervalo de tempo para o qual os valores das métricas são apresentados. O grão de tempo suportado para todas as métricas de capacidade é de uma hora (PT1H).

Métricas de transação

As métricas de transação descrevem a atividade da conta (por exemplo: número de transações ou número de bytes lidos). As métricas de transação são emitidas em cada solicitação para uma conta de armazenamento do Armazenamento do Azure para o Azure Monitor. No caso de nenhuma atividade em sua conta de armazenamento, não haverá dados sobre métricas de transação no período. O grão de tempo define o intervalo de tempo em que os valores métricos são apresentados. Os grãos de tempo suportados para todas as métricas de transação são PT1H e PT1M.

A anatomia de um valor métrico

Você pode obter valores de métrica fornecendo um intervalo de tempo, intervalo de tempo, namespace de métrica, nome da métrica e o tipo de agregação. Aqui está uma descrição de cada elemento:

Elemento Description
Intervalo de tempo O período de tempo que você deseja capturar (por exemplo: ontem ou o último mês).
Intervalo de tempo A granularidade do tempo refletida por um valor métrico. (por exemplo: um valor que reflete uma hora ou um dia).
Espaço de nomes de métricas O namespace da métrica. Isso especifica se uma métrica deve ser obtida no nível da conta de armazenamento ou no nível de um serviço de armazenamento específico (por exemplo: Armazenamento de arquivos).
Nome da métrica A métrica em que está interessado (por exemplo: saída).
Agregação Como você quer que esse valor seja calculado. Na maioria dos casos, você escolherá uma soma ou uma média.

Para métricas que suportam dimensões, você pode filtrar a métrica com o valor de dimensão desejado. As dimensões são pares nome/valor que carregam dados adicionais para descrever o valor métrico. Por exemplo, o tipo de autenticação é uma dimensão para transações. Se estiver interessado em ver apenas transações que foram autorizadas usando uma chave de conta, você pode usar a dimensão de autenticação e filtrar a chave de conta.

A dimensão ResponseType revela a taxa de sucesso e falha, e os motivos da falha, como tempos limites, limitação, erros de rede, falha de autorização e assim por diante. Estas informações podem fornecer uma boa perceção do motivo pelo qual o desempenho das suas aplicações pode estar a ser afetado. Por exemplo, erros frequentes de limitação e tempo limite podem indicar um alto nível de contenção ocorrendo para recursos limitados, e talvez seja necessário rearquitetar seu sistema para usar o nível Premium em vez do nível Standard para suas contas de armazenamento. Também poderá ter de distribuir a carga entre múltiplas contas de armazenamento ou selecionar uma organização diferente para os contentores de blobs e tabelas que a sua aplicação esteja a utilizar.

Visualize e analise métricas

Você pode obter valores de métrica usando o portal do Azure, PowerShell, CLI do Azure ou usando código destinado a bibliotecas de cliente do Azure.

Portal do Azure

A unidade anterior apresentou diferentes maneiras de exibir métricas no portal do Azure. Você pode definir os elementos que aparecem nessas exibições usando o Metrics Explorer. No Metrics Explorer, você pode especificar o intervalo de tempo, intervalo de tempo, namespace de métrica, métrica e agregação para cada valor que deseja analisar. Também é possível filtrar por dimensões. Você pode criar gráficos com base nessas métricas e, em seguida, fixá-los em painéis para facilitar o acesso no futuro.

A imagem a seguir mostra uma configuração de métrica que obtém o número total de transações nas últimas 24 horas. Cada ponto de dados reflete 15 minutos de dados.

Screenshot that shows getting a transaction metric in Metrics Explorer.

A imagem a seguir mostra a dimensão da API sendo usada para obter apenas transações de leitura.

Screenshot that shows applying a dimension in Metrics Explorer.

Linha de comando e scripts

Você pode obter métricas executando comandos com a linha de comando ou organizando comandos em um script que pode ser executado posteriormente como parte de uma tarefa agendada (PowerShell) ou trabalho (CLI do Azure).

PowerShell

Você pode obter valores de métrica usando o cmdlet Get-AzMetric . Este exemplo obtém o número total de transações de leitura para uma conta de armazenamento.

$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"

CLI do Azure

Você pode obter valores de métrica usando o comando az monitor metrics list. Este exemplo obtém o número total de transações de leitura para uma conta de armazenamento.

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

Código da aplicação

Você pode obter valores de métrica escrevendo código que usa qualquer um dos SDKs do Azure. O exemplo a seguir usa o SDK do Azure para .NET para obter a quantidade média de armazenamento de Blob usada em uma conta de armazenamento durante um período de tempo especificado.

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