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 Portal och väljer sedan Aktivitetslogg.
Ö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:
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å det säkerhetsobjektet genom att ta värdet för objektidentifieraren och söka efter säkerhetsobjektet på Microsoft Entra-ID-sidan i Azure Portal. Följande skärmbild visar ett sökresultat i 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å det 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 Portal. Följande skärmbild visar ett sökresultat i Microsoft Entra-ID.
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.
Exportera loggar till lagringskontot. Se Skapa en diagnostikinställning.
Skapa och konfigurera en Synapse-arbetsyta. Se Snabbstart: Skapa en Synapse-arbetsyta.
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