Megosztás a következőn keresztül:


Ajánlott eljárások az Azure Queue Storage monitorozásához

Ez a cikk a Queue Storage gyakori monitorozási forgatókönyveinek gyűjteményét tartalmazza, és gyakorlati tanácsokkal szolgál ezek végrehajtásához.

Üzenetszám figyelése az egyes üzenetsorokban

A metrika használatával figyelheti a tárfiók összes üzenetsorának üzenetszámát QueueMessageCount . Ez a metrika naponta frissül.

Ha PowerShellt használ, az alábbihoz hasonló parancsot használhat:

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

Ha dinamikusan kell meghatároznia, hogy a számítási feladatokat az üzenetkötet kezeléséhez szeretné-e módosítani, lekérdezheti az egyes üzenetsorok hozzávetőleges üzenetszámát, majd a megfelelő művelettel válaszolhat. Az üzenetsor metaadatainak lekérése REST művelettel vagy a támogatott Blob Storage SDK-k bármelyikével lekérheti a hozzávetőleges üzenetszámot.

Az alábbi példa az Azure Storage .NET v12 kódtárat használja a hozzávetőleges üzenetszám lekéréséhez.

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

Fontolja meg a Service Bus használatát is, amely entitásonként támogatja az üzeneteket. További információ: Az Azure Service Bus adathivatkozásának figyelése.

Audit account activity

Sok esetben a tárfiókok tevékenységeit kell naplóznia a biztonság és a megfelelőség érdekében. A tárfiókokon végzett műveletek két kategóriába sorolhatók: vezérlősík és adatsík.

A vezérlősík-művelet bármely Azure Resource Manager-kérés, amely egy tárfiók létrehozására vagy egy meglévő tárfiók tulajdonságának frissítésére kéri. További információ: Azure Resource Manager.

Az adatsík-művelet a tárfiók adatain végzett olyan művelet, amely a tárolási szolgáltatás végpontjára irányuló kérésből ered. Például egy adatsík-művelet akkor lesz végrehajtva, amikor üzenetet ad hozzá az üzenetsorhoz. További információ: Azure Storage API.

A szakasz bemutatja, hogyan azonosíthatja a vezérlő- és adatsík-műveletek "mikor", "ki", "what" és "how" adatait.

A vezérlősík műveleteinek naplózása

A Resource Manager-műveleteket az Azure-tevékenységnapló rögzíti. A tevékenységnapló megtekintéséhez nyissa meg a tárfiókot az Azure Portalon, majd válassza a Tevékenységnapló lehetőséget.

Activity Log

Nyisson meg minden naplóbejegyzést a tevékenységet leíró JSON megtekintéséhez. A következő JSON egy vezérlősík-művelet "mikor", "what" és "how" információját mutatja be:

Activity Log JSON

A "who" információk elérhetősége a vezérlősík-művelet végrehajtásához használt hitelesítési módszertől függ. Ha az engedélyezést egy Microsoft Entra biztonsági tag végezte el, az adott biztonsági tag objektumazonosítója is megjelenik ebben a JSON-kimenetben (például: "http://schemas.microsoft.com/identity/claims/objectidentifier": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"). Mivel előfordulhat, hogy nem mindig jelenik meg más identitással kapcsolatos információ, például e-mail-cím vagy név, az objektumazonosító mindig a legjobb módszer a biztonsági tag egyedi azonosítására.

A biztonsági tag rövid nevét az objektumazonosító értékének figyelembe vételével és a biztonsági tag megkeresésével találja meg az Azure Portal Microsoft Entra ID lapján. Az alábbi képernyőképen egy keresési eredmény látható a Microsoft Entra-azonosítóban.

Search Microsoft Entra ID

Adatsík-műveletek naplózása

Az adatsík-műveletek a Storage Azure-erőforrásnaplóiban vannak rögzítve. A diagnosztikai beállítás konfigurálható úgy, hogy naplókat exportáljon a Log Analytics-munkaterületre natív lekérdezési élmény érdekében.

Íme egy Log Analytics-lekérdezés, amely lekéri a "mikor", a "who", a "what" és a "how" adatokat a naplóbejegyzések listájában.

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

A napló "mikor" részében a TimeGenerated mező azt mutatja, hogy mikor lett rögzítve a naplóbejegyzés.

Az audit "what" része esetén a Uri mező azt mutatja, hogy az elem módosult vagy beolvasva lett.

Az audit "how" részében a OperationName mező azt mutatja, hogy melyik műveletet hajtották végre.

Az audit "who" részében látható, AuthenticationType hogy milyen típusú hitelesítést használtak a kérések teljesítéséhez. Ez a mező megjelenítheti az Azure Storage által támogatott hitelesítési típusokat, beleértve a fiókkulcsok, SAS-jogkivonatok vagy Microsoft Entra-hitelesítés használatát.

Ha egy kérés hitelesítése a Microsoft Entra-azonosítóval történt, a RequesterObjectId mező biztosítja a legmegbízhatóbb módot a biztonsági tag azonosítására. A biztonsági tag rövid nevét a mező értékének RequesterObjectId figyelembe vételével és a biztonsági tag megkeresésével találja meg az Azure Portal Microsoft Entra ID oldalán. Az alábbi képernyőképen egy keresési eredmény látható a Microsoft Entra-azonosítóban.

Search Microsoft Entra ID-2

Bizonyos esetekben előfordulhat, hogy a naplókban egy egyszerű felhasználónév vagy egyszerű felhasználónév jelenik meg. Ha például a biztonsági tag Egy Microsoft Entra-felhasználó, az UPN valószínűleg megjelenik. Más típusú biztonsági tagok, például a felhasználó által hozzárendelt felügyelt identitások, vagy bizonyos esetekben, például a Microsoft Entra-bérlők közötti hitelesítés esetén az UPN nem jelenik meg a naplókban.

Ez a lekérdezés az OAuth biztonsági tagok által végrehajtott összes írási műveletet megjeleníti.

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

A megosztott kulcs és SAS-hitelesítés nem biztosít lehetőséget az egyéni identitások naplózására. Ezért ha javítani szeretné az identitáson alapuló naplózási képességet, javasoljuk, hogy váltson a Microsoft Entra-azonosítóra, és tiltsa meg a megosztott kulcs- és SAS-hitelesítést. A megosztott kulcs és SAS-hitelesítés megelőzésének módjáról az Azure Storage-fiók megosztott kulcsának engedélyezésének megakadályozása című témakörben olvashat. A Microsoft Entra ID használatának megkezdéséhez lásd : Blobok hozzáférésének engedélyezése a Microsoft Entra-azonosítóval

A ritkán használt lekérdezések költségeinek optimalizálása

A logokat a Log Analyticsbe exportálhatja a natív lekérdezési képességek érdekében. Ha a tárfiókon jelentős tranzakciók vannak, a naplók Log Analytics-lel való használatának költsége magas lehet. Tekintse meg az Azure Log Analytics díjszabását. Ha csak alkalmanként szeretne naplókat lekérdezni (például a megfelelőségi naplózás lekérdezési naplóit), fontolja meg a teljes költség csökkentését a naplók tárfiókba való exportálásával, majd egy kiszolgáló nélküli lekérdezési megoldás használatával a naplóadatokon, például az Azure Synapse-on.

Az Azure Synapse használatával kiszolgáló nélküli SQL-készletet hozhat létre a naplóadatok lekérdezéséhez, ha szükséges. Ez jelentősen csökkentheti a költségeket.

  1. Naplók exportálása tárfiókba. Lásd: Diagnosztikai beállítás létrehozása.

  2. Synapse-munkaterület létrehozása és konfigurálása. See Quickstart: Create a Synapse workspace.

  3. Query logs. Lásd: JSON-fájlok lekérdezése kiszolgáló nélküli SQL-készlet használatával az Azure Synapse Analyticsben.

    Here's an example:

     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
    
    

Kapcsolódó információk