Share via


Práticas recomendadas para monitorar o Armazenamento de Filas do Azure

Este artigo apresenta uma coleção de cenários comuns de monitoramento de Armazenamento em Fila e fornece diretrizes de práticas recomendadas para realizá-los.

Monitorar contagens de mensagens em cada fila

Você pode monitorar a contagem de mensagens para todas as filas em uma conta de armazenamento usando a QueueMessageCount métrica. Essa métrica é atualizada diariamente.

Se você estiver usando o PowerShell, poderá usar um comando semelhante ao seguinte:

(Get-AzMetric -ResourceId /subscriptions/xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/contosogroup/providers/Microsoft.Storage/storageAccounts/contoso/queueServices/default -MetricName "QueueMessageCount").data.Average

Se precisar determinar dinamicamente se as cargas de trabalho devem ser ajustadas para lidar com o volume de mensagens, você poderá consultar a contagem aproximada de mensagens em cada fila e, em seguida, responder com a ação apropriada. Use a operação Get Queue Metadata REST ou use qualquer um dos SDKs de armazenamento de Blob suportados para obter a contagem aproximada de mensagens.

O exemplo a seguir usa a biblioteca .NET v12 do Armazenamento do Azure para obter a contagem aproximada de mensagens.

static async Task<string> RetrieveNextMessageAsync(QueueClient theQueue)
{
    if (await theQueue.ExistsAsync())
    {
        QueueProperties properties = await theQueue.GetPropertiesAsync();

        if (properties.ApproximateMessagesCount > 0)
        {
            QueueMessage[] retrievedMessage = await theQueue.ReceiveMessagesAsync(1);
            string theMessage = retrievedMessage[0].MessageText;
            await theQueue.DeleteMessageAsync(retrievedMessage[0].MessageId, retrievedMessage[0].PopReceipt);
            return theMessage;
        }

        return null;
    }

    return null;
}

Considere também o uso do Service Bus, que oferece suporte a mensagens por entidade. Para saber mais, consulte Monitorando a referência de dados do Barramento de Serviço do Azure.

Auditar a atividade da conta

Em muitos casos, você precisará auditar as atividades de suas contas de armazenamento para garantir segurança e conformidade. As operações em contas de armazenamento se enquadram em duas categorias: Plano de Controle e Plano de Dados.

Uma operação de plano de controle é qualquer solicitação do Azure Resource Manager para criar uma conta de armazenamento ou atualizar uma propriedade de uma conta de armazenamento existente. Para obter mais informações, consulte Azure Resource Manager.

Uma operação de plano de dados é uma operação nos dados em uma conta de armazenamento que resulta de uma solicitação ao ponto de extremidade do serviço de armazenamento. Por exemplo, uma operação de plano de dados é executada quando você adiciona uma mensagem à fila. Para obter mais informações, consulte API de Armazenamento do Azure.

A seção mostra como identificar as informações "quando", "quem", "o quê" e "como" das operações de controle e plano de dados.

Auditoria das operações do avião de controlo

As operações do Resource Manager são capturadas no log de atividades do Azure. Para exibir o log de atividades, abra sua conta de armazenamento no portal do Azure e selecione Log de atividades.

Activity Log

Abra qualquer entrada de log para exibir JSON que descreva a atividade. O JSON a seguir mostra as informações "quando", "o quê" e "como" de uma operação do plano de controle:

Activity Log JSON

A disponibilidade das informações "quem" depende do método de autenticação que foi usado para executar a operação do avião de controle. Se a autorização foi executada por uma entidade de segurança do Microsoft Entra, o identificador de objeto dessa entidade de segurança também apareceria nessa saída JSON (por exemplo: "http://schemas.microsoft.com/identity/claims/objectidentifier": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"). Como nem sempre você pode ver outras informações relacionadas à identidade, como um endereço de e-mail ou nome, o identificador de objeto é sempre a melhor maneira de identificar exclusivamente a entidade de segurança.

Você pode encontrar o nome amigável dessa entidade de segurança tomando o valor do identificador de objeto e pesquisando a entidade de segurança na página ID do Microsoft Entra do portal do Azure. A captura de tela a seguir mostra um resultado de pesquisa no Microsoft Entra ID.

Search Microsoft Entra ID

Auditoria de operações do plano de dados

As operações do plano de dados são capturadas nos logs de recursos do Azure para Armazenamento. Você pode definir a configuração Diagnóstico para exportar logs para o espaço de trabalho do Log Analytics para uma experiência de consulta nativa.

Aqui está uma consulta do Log Analytics que recupera as informações "quando", "quem", "o quê" e "como" em uma lista de entradas de log.

StorageQueueLogs 
| where TimeGenerated > ago(3d) 
| project TimeGenerated, AuthenticationType, RequesterObjectId, OperationName, Uri

Para a parte "quando" da auditoria, o TimeGenerated campo mostra quando a entrada de log foi registrada.

Para a parte "o quê" da auditoria, o campo mostra que o Uri item foi modificado ou lido.

Para a parte "como" da auditoria, o OperationName campo mostra qual operação foi executada.

Para a parte "quem" da auditoria, AuthenticationType mostra qual tipo de autenticação foi usado para fazer uma solicitação. Este campo pode mostrar qualquer um dos tipos de autenticação suportados pelo Armazenamento do Azure, incluindo o uso de uma chave de conta, um token SAS ou autenticação do Microsoft Entra.

Se uma solicitação foi autenticada usando o Microsoft Entra ID, o RequesterObjectId campo fornece a maneira mais confiável de identificar a entidade de segurança. Você pode encontrar o nome amigável dessa entidade de segurança pegando o RequesterObjectId valor do campo e pesquisando a entidade de segurança na página ID do Microsoft Entra do portal do Azure. A captura de tela a seguir mostra um resultado de pesquisa no Microsoft Entra ID.

Search Microsoft Entra ID-2

Em alguns casos, um nome principal de usuário ou UPN pode aparecer nos logs. Por exemplo, se a entidade de segurança for um usuário do Microsoft Entra, o UPN provavelmente aparecerá. Para outros tipos de entidades de segurança, como identidades gerenciadas atribuídas pelo usuário, ou em determinados cenários, como autenticação de locatário entre Microsoft Entra, o UPN não aparecerá nos logs.

Esta consulta mostra todas as operações de gravação executadas por entidades de segurança OAuth.

StorageQueueLogs
| where TimeGenerated > ago(3d)
  and OperationName == "PutMessage"
  and AuthenticationType == "OAuth"
| project TimeGenerated, AuthenticationType, RequesterObjectId, OperationName, Uri

A chave compartilhada e a autenticação SAS não fornecem meios de auditar identidades individuais. Portanto, se você quiser melhorar sua capacidade de auditoria com base na identidade, recomendamos que faça a transição para o Microsoft Entra ID e impeça a autenticação de chave compartilhada e SAS. Para saber como impedir a autenticação de Chave Compartilhada e SAS, consulte Impedir autorização de Chave Compartilhada para uma conta de Armazenamento do Azure. Para começar a usar o Microsoft Entra ID, consulte Autorizar o acesso a blobs usando o Microsoft Entra ID

Otimize o custo para consultas pouco frequentes

Você pode exportar logs para o Log Analytics para obter recursos de consulta nativos avançados. Quando você tem transações massivas em sua conta de armazenamento, o custo de usar logs com o Log Analytics pode ser alto. Consulte Preços do Azure Log Analytics. Se você planeja consultar logs apenas ocasionalmente (por exemplo, logs de consulta para auditoria de conformidade), pode considerar reduzir o custo total exportando logs para a conta de armazenamento e, em seguida, usando uma solução de consulta sem servidor sobre os dados de log, por exemplo, Azure Synapse.

Com o Azure Synapse, você pode criar um pool SQL sem servidor para consultar dados de log quando precisar. Tal poderia reduzir significativamente os custos.

  1. Exporte logs para a conta de armazenamento. Consulte Criando uma configuração de diagnóstico.

  2. Crie e configure um espaço de trabalho Synapse. Veja Início Rápido: Criar uma área de trabalho do Synapse.

  3. Registos de consultas. Consulte Consultar arquivos JSON usando o pool SQL sem servidor no Azure Synapse Analytics.

    Eis um exemplo:

     select
         JSON_VALUE(doc, '$.time') AS time,
         JSON_VALUE(doc, '$.properties.accountName') AS accountName,
         JSON_VALUE(doc, '$.identity.type') AS identityType,    
         JSON_VALUE(doc, '$.identity.requester.objectId') AS requesterObjectId,
         JSON_VALUE(doc, '$.operationName') AS operationName,
         JSON_VALUE(doc, '$.callerIpAddress') AS callerIpAddress,
         JSON_VALUE(doc, '$.uri') AS uri
         doc
     from openrowset(
             bulk 'https://demo2uswest4log.blob.core.windows.net/insights-logs-storageread/resourceId=/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/mytestrp/providers/Microsoft.Storage/storageAccounts/demo2uswest/blobServices/default/y=2021/m=03/d=19/h=*/m=*/PT1H.json',
             format = 'csv', fieldterminator ='0x0b', fieldquote = '0x0b'
         ) with (doc nvarchar(max)) as rows
     order by JSON_VALUE(doc, '$.time') desc
    
    

Consulte também