Monitoramento do Armazenamento de Blobs do Azure

Quando você tem aplicativos e processos de negócios críticos que dependem de recursos do Azure, recomendamos monitorar a disponibilidade, o desempenho e a operação desses recursos. Este artigo descreve os dados de monitoramento gerados pelo Armazenamento de Blobs do Azure e como usar os recursos do Azure Monitor para analisar alertas sobre esses dados.

Observação

Os logs do Armazenamento do Microsoft Azure no Azure Monitor estão em versão prévia pública e disponíveis para teste de versão prévia em todas as regiões de nuvem do Governo dos EUA. Essa visualização habilita logs para blobs (que inclui Azure Data Lake Storage Gen2), arquivos, filas e tabelas. Esse recurso está disponível para todas as contas de armazenamento criadas com o modelo de implantação Azure Resource Manager. Para saber mais, confira Visão geral da conta de armazenamento.

Visão geral do Monitor

A página de Visão Geral no portal do Azure de cada recurso de armazenamento de Blob contém um resumo do uso de recurso, como solicitações e cobrança por hora. Essas informações são úteis, mas apenas uma pequena quantidade de dados de monitoramento está disponível. Alguns desses dados são coletados automaticamente e ficam disponíveis para análise assim que você cria o recurso. Você pode habilitar tipos adicionais de coleta de dados com algumas configurações.

O que é o Azure Monitor?

O Armazenamento de Blobs do Azure cria dados de monitoramento usando o Azure Monitor, que é um serviço de monitoramento de pilha completo no Azure. O Azure Monitor oferece um conjunto completo de recursos para monitorar os recursos do Azure e recursos em outras nuvens e locais.

Comece com o artigo Como monitorar os recursos do Azure com o Azure Monitor, que descreve o seguinte:

  • O que é o Azure Monitor?
  • Custos associados ao monitoramento
  • Monitoramento de dados coletados no Azure
  • Configuração de coleta de dados
  • Ferramentas padrão no Azure para analisar e alertar sobre dados de monitoramento

As seções a seguir se baseiam neste artigo para descrever os dados específicos coletados do Armazenamento do Azure. Os exemplos mostram como configurar a coleta de dados e analisar esses dados com as ferramentas do Azure.

Dados de monitoramento

O Armazenamento de Blobs do Azure coleta os mesmos tipos de dados de monitoramento que outros recursos do Azure, que são descritos em Dados de monitoramento dos recursos do Azure.

Consulte Referência de dados de monitoramento do Armazenamento de Blobs do Azure para obter informações detalhadas sobre as métricas e métricas de logs criadas pelo Armazenamento de Blobs do Azure.

As métricas e os logs do Azure Monitor oferecem suporte apenas às contas de armazenamento do Azure Resource Manager. O Azure Monitor não tem suporte a contas de armazenamento clássicas. Se você quiser usar as métricas ou os logs nas contas de armazenamento clássicas, precisará migrar para a conta de armazenamento do Azure Resource Manager. Para saber mais, confira Migrar para o Azure Resource Manager.

Você pode continuar usando logs e métricas clássicos se desejar. Na verdade, as métricas e os logs clássicos estão disponíveis em paralelo com as métricas e os logs no Azure Monitor. O suporte permanece disponível até que o Armazenamento do Microsoft Azure encerre o serviço nas métricas e nos logs herdados.

Coleta e roteamento

As métricas de plataforma e o Log de atividades são coletados automaticamente, mas podem ser roteados para outros locais usando uma configuração de diagnóstico.

Para coletar logs de recurso, é necessário criar uma configuração de diagnóstico. Ao criar a configuração, escolha blob como o tipo de armazenamento para a qual deseja habilitar os logs. Em seguida, especifique uma das seguintes categorias de operações para as quais deseja coletar os logs.

Categoria Descrição
StorageRead Ler operações em objetos.
StorageWrite Gravar operações em objetos.
StorageDelete Excluir operações em objetos.

Observação

O Data Lake Storage Gen2 não é exibido como um tipo de armazenamento. Isso ocorre porque o Data Lake Storage Gen2 é um conjuto de funcionalidades disponíveis para o armazenamento do Blob.

Criação de uma configuração de diagnóstico

Você pode criar uma configuração de diagnóstico usando o portal do Azure, o PowerShell, a CLI do Azure, um modelo do Azure Resource Manager ou o Azure Policy.

Para diretrizes gerais, consulte Criar configuração de diagnóstico para coletar logs e métricas de plataforma no Azure.

Observação

Os logs do Armazenamento do Microsoft Azure no Azure Monitor estão em versão prévia pública e disponíveis para teste de versão prévia em todas as regiões de nuvem do Governo dos EUA. Essa visualização habilita logs para blobs (que inclui Azure Data Lake Storage Gen2), arquivos, filas e tabelas. Esse recurso está disponível para todas as contas de armazenamento criadas com o modelo de implantação Azure Resource Manager. Para saber mais, confira Visão geral da conta de armazenamento.

  1. Entre no portal do Azure.

  2. Navegue para sua conta de armazenamento.

  3. Na seção Monitoramento, clique em Configuração de diagnóstico (versão preliminar) .

    portal – Logs de diagnóstico

  4. Escolha blob como o tipo de armazenamento para o qual deseja habilitar os logs.

  5. Clique em Adicionar configuração de diagnóstico.

    Portal – Logs de recursos – adicionar configuração de diagnóstico

    Será exibida a página Configurações de diagnóstico.

    Página de logs de recursos

  6. No campo Nome da página, insira um nome para essa configuração de log de recursos. Em seguida, selecione as operações que deseja que sejam registradas em log (operações de leitura, gravação e exclusão) e para onde deseja que os logs sejam enviados.

Arquivar logs em uma conta de armazenamento

Se optar por arquivar seus logs em uma conta de armazenamento, pagará pelo volume de logs que são enviados para a conta de armazenamento. Para obter preços específicos, consulte a seção de Logs da plataforma da página de preços do Azure Monitor.

  1. Marque a caixa de seleção Arquivar em uma conta de armazenamento e, em seguida, selecione o botão Configurar.

    Armazenamento de arquivos da página de configurações de diagnóstico

  2. Na lista suspensa Conta de armazenamento, selecione a conta de armazenamento na qual deseja arquivar os logs, clique no botão OK e, em seguida, selecione o botão Salvar.

    Importante

    Você não pode definir uma política de retenção. No entanto, você pode gerenciar a política de retenção de um contêiner de log, definindo uma política de gerenciamento de ciclo de vida. Para saber como, consulte Otimizar os custos automatizando as camadas de acesso do Armazenamento de Blob do Azure.

    Observação

    Antes de escolher uma conta de armazenamento como destino de exportação, consulte Arquivar logs de recursos no Azure para entender os pré-requisitos da conta de armazenamento.

Transmitir logs por streaming nos Hubs de Eventos do Azure

Se optar por transmitir os logs por streaming para um hub de eventos, pagará pelo volume de logs que são enviados para o hub de eventos. Para obter preços específicos, consulte a seção de Logs da plataforma da página de preços do Azure Monitor.

  1. Marque a caixa de seleção Transmitir para um hub de eventos e selecione o botão Configurar.

  2. No painel Selecionar um hub de eventos, escolha o namespace, o nome e o nome da política do hub de eventos para o qual deseja transmitir os logs.

    Hub de eventos da página de configurações de diagnóstico

  3. Selecione o botão OK e, em seguida, clique no botão Salvar.

Enviar logs para o Azure Log Analytics

  1. Selecione a caixa de seleção Enviar para o Log Analytics, selecione um workspace do Log Analytics e, em seguida, selecione o botão Salvar.

    Página de Configurações de diagnósticos do Log Analytics

Analisando as métricas

Você pode analisar métricas para o Armazenamento do Microsoft Azure com métricas de outros serviços do Azure usando o Metrics Explorer. Para abrir o Metrics Explorer, selecione Métricas no menu Azure Monitor. Para informações sobre o uso dessa ferramenta, consulte Introdução ao Azure Metrics Explorer.

Este exemplo mostra como exibir Transações no nível da conta.

Captura de tela de acesso às métricas no portal do Azure

Para métricas com suporte para dimensões, você pode filtrar a métrica com valor da dimensão desejado. Este exemplo mostra como exibir transações no nível de conta em uma operação específica, selecionando valores para a dimensão Nome da API.

Captura de tela de acesso às métricas com dimensão no portal do Azure

Para ver uma lista completa das dimensões compatíveis com o Armazenamento do Microsoft Azure, consulte Dimensões de métricas.

Métricas para o Armazenamento de Blobs do Azure estão localizadas nestes namespaces:

  • Microsoft.Storage/storageAccounts
  • Microsoft.Storage/storageAccounts/blobServices

Para ver uma lista de todas as métricas de suporte do Azure Monitor, que inclui o Armazenamento de Blobs do Azure, consulte Métricas com suporte do Azure Monitor.

Acessar métricas

Dica

Para exibir os exemplos da CLI do Azure ou do .NET, escolha as guias correspondentes listadas aqui.

O Azure Monitor fornece o SDK do .NET para ler valores e definição de métricas. O código de exemplo mostra como usar o SDK com parâmetros diferentes. Você precisa usar 0.18.0-preview ou uma versão posterior para métricas de armazenamento.

Nestes exemplos, substitua o espaço reservado <resource-ID> pela ID do recurso de toda a conta de armazenamento ou pelo serviço de armazenamento de blob. É possível localizar essas IDs de recursos nas páginas Pontos de Extremidades da conta de armazenamento no portal do Azure.

Substitua a variável <subscription-ID> pela ID da sua assinatura. Para saber como obter valores para <tenant-ID>, <application-ID> e <AccessKey>, consulte Usar o portal para criar um aplicativo e uma entidade de serviço do Azure Active Directory que possa acessar recursos.

Listar a definição de métrica no nível de conta

Os exemplos a seguir mostram como listar a definição de uma métrica no nível da conta:

    public static async Task ListStorageMetricDefinition()
    {
        var resourceId = "<resource-ID>";
        var subscriptionId = "<subscription-ID>";
        var tenantId = "<tenant-ID>";
        var applicationId = "<application-ID>";
        var accessKey = "<AccessKey>";

        MonitorManagementClient readOnlyClient = AuthenticateWithReadOnlyClient(tenantId, applicationId, accessKey, subscriptionId).Result;
        IEnumerable<MetricDefinition> metricDefinitions = await readOnlyClient.MetricDefinitions.ListAsync(resourceUri: resourceId, cancellationToken: new CancellationToken());

        foreach (var metricDefinition in metricDefinitions)
        {
            // Enumrate metric definition:
            //    Id
            //    ResourceId
            //    Name
            //    Unit
            //    MetricAvailabilities
            //    PrimaryAggregationType
            //    Dimensions
            //    IsDimensionRequired
        }
    }

Leitura dos valores de métrica no nível de conta

O exemplo a seguir mostra como ler os dados UsedCapacity no nível da conta:

    public static async Task ReadStorageMetricValue()
    {
        var resourceId = "<resource-ID>";
        var subscriptionId = "<subscription-ID>";
        var tenantId = "<tenant-ID>";
        var applicationId = "<application-ID>";
        var accessKey = "<AccessKey>";

        MonitorClient 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;

        Response = await readOnlyClient.Metrics.ListAsync(
            resourceUri: resourceId,
            timespan: timeSpan,
            interval: System.TimeSpan.FromHours(1),
            metricnames: "UsedCapacity",

            aggregation: "Average",
            resultType: ResultType.Data,
            cancellationToken: CancellationToken.None);

        foreach (var metric in Response.Value)
        {
            // Enumrate metric value
            //    Id
            //    Name
            //    Type
            //    Unit
            //    Timeseries
            //        - Data
            //        - Metadatavalues
        }
    }

Leitura de valores métricos multidimensionais

Para métricas multidimensionais, você precisa definir os filtros de metadados se você quiser ler dados da métrica nos valores de dimensão específica.

O exemplo a seguir mostra como ler dados em uma métrica que suporta várias dimensões:

    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}";
        // How to identify Tenant ID, Application ID and Access Key: https://azure.microsoft.com/documentation/articles/resource-group-create-service-principal-portal/
        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;
        // It's applicable to define meta data filter when a metric support dimension
        // More conditions can be added with the 'or' and 'and' operators, example: BlobType eq 'BlockBlob' or BlobType eq 'PageBlob'
        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)
        {
            //Enumrate metric value
            //    Id
            //    Name
            //    Type
            //    Unit
            //    Timeseries
            //        - Data
            //        - Metadatavalues
        }
    }

Análise de logs

Você pode acessar os logs de recursos como um blob em uma conta de armazenamento, como dados de evento, ou por meio de consultas do Log Analytics.

Para obter uma referência detalhada dos campos que aparecem nesses logs, consulte a Referência de dados de monitoramento do Armazenamento de Blobs do Azure.

Observação

Os logs do Armazenamento do Microsoft Azure no Azure Monitor estão em versão prévia pública e disponíveis para teste de versão prévia em todas as regiões de nuvem do Governo dos EUA. Essa versão preliminar habilita logs para blobs (que incluem Azure Data Lake Storage Gen2), arquivos, filas, tabelas, contas de armazenamento Premium nas contas de armazenamento GPv1 e GPv2. Não há suporte para contas de armazenamento clássicas.

As entradas de log são criadas somente se há solicitações feitas no ponto de extremidade de serviço. Por exemplo, se uma conta de armazenamento tiver atividades no ponto de extremidade de blob, mas não em nos pontos de extremidade de tabela ou fila, somente os logs pertencentes ao serviço de armazenamento de blobs serão criados. Os logs do Armazenamento do Microsoft Azure contêm informações detalhadas sobre solicitações bem-sucedidas e com falha para um serviço de armazenamento. Essas informações podem ser usadas para monitorar solicitações individuais e diagnosticar problemas com um serviço de armazenamento. As solicitações são registradas em uma base de melhor esforço.

Registrar em log solicitações autenticadas

Os seguintes tipos de solicitações autenticadas são registrados:

  • Solicitações bem-sucedidas
  • Solicitações com falha, incluindo tempo limite, limitação, rede, autorização e outros erros
  • Solicitações que usam uma SAS (Assinatura de Acesso Compartilhado) ou OAuth, incluindo solicitações bem-sucedidas e com falha
  • Solicitações para dados de análise (dados de log clássicos no contêiner $logs e dados de métrica clássicos nas tabelas $metric)

As solicitações feitas pelo próprio serviço de armazenamento de Blobs, como criação ou exclusão de log, não são registradas em log. Para uma lista completa de dados registrados, consulte Mensagens de operações e status registradas em logs e Formato de log de armazenamento.

Registrar em log solicitações anônimas

Os seguintes tipos de solicitações anônimas são registrados:

  • Solicitações bem-sucedidas
  • Erros do servidor
  • Erros de tempo limite para o cliente e para o servidor
  • Solicitações GET com falha com o código de erro 304 (não modificado)

Nenhuma outra solicitação anônima com falha é registrada em log. Para uma lista completa de dados registrados, consulte Mensagens de operações e status registradas em logs e Formato de log de armazenamento.

Acessar logs em uma conta de armazenamento

Os logs aparecem como blobs armazenados em um contêiner na conta de armazenamento de destino. Os dados são coletados e armazenados dentro de um único blob como um conteúdo JSON delimitado por linha. O nome do blob segue a convenção de nomenclatura:

https://<destination-storage-account>.blob.core.windows.net/insights-logs-<storage-operation>/resourceId=/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<source-storage-account>/blobServices/default/y=<year>/m=<month>/d=<day>/h=<hour>/m=<minute>/PT1H.json

Aqui está um exemplo:

https://mylogstorageaccount.blob.core.windows.net/insights-logs-storagewrite/resourceId=/subscriptions/
208841be-a4v3-4234-9450-08b90c09f4/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount/blobServices/default/y=2019/m=07/d=30/h=23/m=12/PT1H.json

Acessar logs em um hub de eventos

Os logs enviados para um hub de eventos não são armazenados como um arquivo, mas você pode verificar se o hub de eventos recebeu as informações de log. No portal do Azure, navegue até seu hub de eventos e verifique se a contagem de mensagens de entrada é maior que zero.

Logs de auditoria

Você pode acessar e ler dados de log enviados ao seu hub de eventos usando informações de segurança e ferramentas de monitoramento e gerenciamento de eventos. Para mais informações, consulte O que posso fazer com os dados de monitoramento que estão sendo enviados ao meu hub de eventos?.

Acessar logs em um workspace do Log Analytics

Você pode acessar os logs enviados a um workspace do Log Analytics usando consultas de log do Azure Monitor.

Para obter mais informações, confira Introdução ao Log Analytics no Azure Monitor.

Os dados são armazenados na tabela StorageBlobLog. Os logs para Data Lake Storage Gen2 não são exibidos em uma tabela dedicada. Isso ocorre porque o Data Lake Storage Gen2 não é um serviço. É um conjunto de funcionalidades que pode ser habilitado em sua conta de armazenamento. Se você tiver habilitado essas funcionalidades, os logs continuarão sendo exibidos na tabela StorageBlobLog.

Consultas de exemplo do Kusto

Veja algumas consultas adicionais que você pode inserir na barra Pesquisa de logs para ajudar a monitorar o Armazenamento de Blobs. Essas consultas funcionam com a nova linguagem.

Importante

Quando seleciona Logs no menu do grupo de recursos da conta de armazenamento, o Log Analytics é aberto com o escopo de consulta definido para o grupo recursos. Isso significa que as consultas de log incluirão apenas os dados desse grupo de recursos. Se quiser executar uma consulta que inclua dados de outros recursos ou dados de outros serviços do Azure, selecione Logs no menu Azure Monitor. Confira Escopo da consulta de log e intervalo de tempo no Log Analytics do Azure Monitor para obter detalhes.

Use essas consultas para ajudar a monitorar suas contas do Armazenamento do Microsoft Azure:

  • Para listar os 10 erros mais comuns nos últimos três dias.

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and StatusText !contains "Success"
    | summarize count() by StatusText
    | top 10 by count_ desc
    
  • Para listar as 10 operações que causaram mais erros nos últimos três dias.

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and StatusText !contains "Success"
    | summarize count() by OperationName
    | top 10 by count_ desc
    
  • Para listar as 10 operações com a latência de ponta a ponta mais longa nos últimos três dias.

    StorageBlobLogs
    | where TimeGenerated > ago(3d)
    | top 10 by DurationMs desc
    | project TimeGenerated, OperationName, DurationMs, ServerLatencyMs, ClientLatencyMs = DurationMs - ServerLatencyMs
    
  • Para listar todas as operações que causaram erros de limitação da largura de banda do lado do servidor nos últimos três dias.

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and StatusText contains "ServerBusy"
    | project TimeGenerated, OperationName, StatusCode, StatusText
    
  • Para listar todas as solicitações com acesso anônimo nos últimos três dias.

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and AuthenticationType == "Anonymous"
    | project TimeGenerated, OperationName, AuthenticationType, Uri
    
  • Para criar um gráfico de pizza das operações usadas nos últimos três dias.

    StorageBlobLogs
    | where TimeGenerated > ago(3d)
    | summarize count() by OperationName
    | sort by count_ desc
    | render piechart
    

Suporte a recursos

Esta tabela mostra como a sua conta dá suporte a esse recurso e o impacto no suporte quando você habilita determinadas funcionalidades.

Logs no Azure Monitor

Tipo de conta de armazenamento Armazenamento de Blobs (suporte padrão) Data Lake Storage Gen2 1 NFS 3.0 1
Uso geral v2 Standard Sim 2 Sim 2 Sim 2
Blobs de blocos Premium Sim 2 Sim 2 Sim 2

Métricas no Azure Monitor

Tipo de conta de armazenamento Armazenamento de Blobs (suporte padrão) Data Lake Storage Gen2 1 NFS 3.0 1
Uso geral v2 Standard Sim Sim Sim
Blobs de blocos Premium Sim Sim 2 Sim 2

1 O Data Lake Storage Gen2 e o protocolo NFS (Network File System) 3.0 exigem uma conta de armazenamento com um namespace hierárquico habilitado.

2 Há suporte para o recurso no nível de versão prévia.

Perguntas frequentes

Armazenamento do Azure dá suporte a métricas para gerenciados discos ou discos não gerenciado?

Não. A Computação do Azure suporta as métricas em discos. Para obter mais informações, consulte Métricas por dicso para discos gerenciados e não gerenciados.

Próximas etapas