Share via


Metodtips för övervakning av Azure Queue Storage

Den här artikeln innehåller en samling vanliga scenarier för övervakning av kölagring och ger dig riktlinjer för bästa praxis för att åstadkomma dem.

Övervaka antalet meddelanden i varje kö

Du kan övervaka antalet meddelanden för alla köer i ett lagringskonto med hjälp av måttet QueueMessageCount . Det här måttet uppdateras dagligen.

Om du använder PowerShell kan du använda ett kommando som liknar följande:

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

Om du behöver bestämma dynamiskt om du vill justera arbetsbelastningar för att hantera meddelandevolymen kan du fråga ungefärligt antal meddelanden i varje kö och sedan svara med lämplig åtgärd. Använd REST-åtgärden Hämta kömetadata eller använd någon av bloblagrings-SDK:erna som stöds för att få det ungefärliga antalet meddelanden.

I följande exempel används Azure Storage .NET v12-biblioteket för att få det ungefärliga antalet meddelanden.

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

Överväg också att använda Service Bus som stöder meddelande per entitet. Mer information finns i Övervaka Azure Service Bus-datareferens.

Granska kontoaktivitet

I många fall måste du granska aktiviteterna för dina lagringskonton för säkerhet och efterlevnad. Åtgärder på lagringskonton finns i två kategorier: Kontrollplan och dataplan.

En kontrollplansåtgärd är en Azure Resource Manager-begäran om att skapa ett lagringskonto eller uppdatera en egenskap för ett befintligt lagringskonto. Mer information finns i Azure Resource Manager.

En dataplansåtgärd är en åtgärd på data i ett lagringskonto som är resultatet av en begäran till lagringstjänstens slutpunkt. Till exempel körs en dataplansåtgärd när du lägger till ett meddelande i kön. Mer information finns i Azure Storage API.

Avsnittet visar hur du identifierar "när", "vem", "vad" och "hur" information om kontroll- och dataplansåtgärder.

Granska kontrollplansåtgärder

Resource Manager-åtgärder samlas in i Azure-aktivitetsloggen. Om du vill visa aktivitetsloggen öppnar du ditt lagringskonto i Azure-portalen och väljer sedan Aktivitetslogg.

Activity Log

Öppna alla loggposter för att visa JSON som beskriver aktiviteten. Följande JSON visar informationen "when", "what" och "how" för en kontrollplansåtgärd:

Activity Log JSON

Tillgängligheten för "vem"-informationen beror på vilken autentiseringsmetod som användes för att utföra kontrollplansåtgärden. Om auktoriseringen utfördes av ett Microsoft Entra-säkerhetsobjekt visas även objektidentifieraren för det säkerhetsobjektet i dessa JSON-utdata (till exempel: "http://schemas.microsoft.com/identity/claims/objectidentifier": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"). Eftersom du kanske inte alltid ser annan identitetsrelaterad information, till exempel en e-postadress eller ett namn, är objektidentifieraren alltid det bästa sättet att unikt identifiera säkerhetsobjektet.

Du hittar det egna namnet på säkerhetsobjektet genom att ta värdet för objektidentifieraren och söka efter säkerhetsobjektet på Microsoft Entra-ID-sidan i Azure-portalen. Följande skärmbild visar ett sökresultat i Microsoft Entra-ID.

Search Microsoft Entra ID

Granska dataplansåtgärder

Dataplansåtgärder samlas in i Azure-resursloggar för Storage. Du kan konfigurera diagnostikinställningen för att exportera loggar till Log Analytics-arbetsytan för en intern frågeupplevelse.

Här är en Log Analytics-fråga som hämtar informationen "when", "who", "what" och "how" i en lista med loggposter.

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

För "när"-delen av granskningen visas fältet TimeGenerated när loggposten registrerades.

För "vad"-delen av granskningen Uri visar fältet att objektet har ändrats eller lästs.

För "hur"-delen av granskningen OperationName visar fältet vilken åtgärd som kördes.

För "vem"-delen av granskningen AuthenticationType visar vilken typ av autentisering som användes för att göra en begäran. Det här fältet kan visa alla typer av autentisering som Azure Storage stöder, inklusive användning av en kontonyckel, en SAS-token eller Microsoft Entra-autentisering.

Om en begäran autentiserades RequesterObjectId med hjälp av Microsoft Entra-ID är fältet det mest tillförlitliga sättet att identifiera säkerhetsobjektet. Du hittar det egna namnet på säkerhetsobjektet genom att ta värdet RequesterObjectId för fältet och söka efter säkerhetsobjektet på Microsoft Entra-ID-sidan i Azure-portalen. Följande skärmbild visar ett sökresultat i Microsoft Entra-ID.

Search Microsoft Entra ID-2

I vissa fall kan ett användarhuvudnamn eller UPN visas i loggar. Om säkerhetsobjektet till exempel är en Microsoft Entra-användare visas UPN troligen. För andra typer av säkerhetsobjekt, till exempel användartilldelade hanterade identiteter eller i vissa scenarier, till exempel mellan Microsoft Entra-klientautentisering, visas inte UPN i loggarna.

Den här frågan visar alla skrivåtgärder som utförs av OAuth-säkerhetsobjekt.

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

Delad nyckel och SAS-autentisering ger inget sätt att granska enskilda identiteter. Om du vill förbättra din möjlighet att granska baserat på identitet rekommenderar vi därför att du övergår till Microsoft Entra-ID och förhindrar delad nyckel och SAS-autentisering. Information om hur du förhindrar delad nyckel och SAS-autentisering finns i Förhindra auktorisering av delad nyckel för ett Azure Storage-konto. Information om hur du kommer igång med Microsoft Entra-ID finns i Auktorisera åtkomst till blobar med hjälp av Microsoft Entra-ID

Optimera kostnaden för ovanliga frågor

Du kan exportera loggar till Log Analytics för omfattande interna frågefunktioner. När du har stora transaktioner på ditt lagringskonto kan kostnaden för att använda loggar med Log Analytics vara hög. Se Prissättning för Azure Log Analytics. Om du bara planerar att köra frågor mot loggar ibland (till exempel frågeloggar för efterlevnadsgranskning) kan du överväga att minska den totala kostnaden genom att exportera loggar till lagringskontot och sedan använda en serverlös frågelösning ovanpå loggdata, till exempel Azure Synapse.

Med Azure Synapse kan du skapa en serverlös SQL-pool för att köra frågor mot loggdata när du behöver det. Detta kan minska kostnaderna avsevärt.

  1. Exportera loggar till lagringskontot. Se Skapa en diagnostikinställning.

  2. Skapa och konfigurera en Synapse-arbetsyta. Se Snabbstart: Skapa en Synapse-arbetsyta.

  3. Frågeloggar. Se Fråga JSON-filer med hjälp av en serverlös SQL-pool i Azure Synapse Analytics.

    Här är ett exempel:

     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
    
    

Se även