Bewaken en fouten opsporen met inzichten in Azure Cosmos DB

VAN TOEPASSING OP: SQL API Cassandra API Gremlin API Table API Azure Cosmos DB-API voor MongoDB

Azure Cosmos DB biedt inzichten voor doorvoer, opslag, consistentie, beschikbaarheid en latentie. De Azure-portal biedt een geaggregeerde weergave van deze metrische gegevens. U kunt ook metrische gegevens uit Azure Cosmos DB bekijken vanuit de Azure Monitor API. De dimensiewaarden voor de metrische gegevens, zoals containernaam, zijn niet hoofdlettergevoelig. U moet dus hoofdlettergevoelige vergelijking gebruiken bij het uitvoeren van tekenreeksvergelijkingen op deze dimensiewaarden. Zie het artikel Metrische gegevens ophalen uit Azure Monitor voor meer informatie over het weergeven van metrische gegevens van Azure Monitor.

In dit artikel worden veelvoorkomende use cases beschreven en wordt uitgelegd hoe Azure Cosmos DB-inzichten kunnen worden gebruikt om deze problemen te analyseren en op te sporen. Standaard worden de metrische inzichten elke vijf minuten verzameld en gedurende zeven dagen bewaard.

Inzichten weergeven vanuit De Azure-portal

  1. Meld u aan bij Azure Portal en navigeer naar uw Azure Cosmos DB-account.

  2. U kunt de metrische gegevens van uw account weergeven vanuit het deelvenster Metrische gegevens of het deelvenster Inzichten .

  3. Open het deelvenster Inzichten . In het deelvenster Inzichten worden standaard de metrische gegevens voor doorvoer, aanvragen, opslag, beschikbaarheid, latentie, systeem en accountbeheer weergegeven voor een container in uw account. U kunt het tijdsbereik, de database en de container selecteren waarvoor u inzichten wilt weergeven. Op het tabblad Overzicht ziet u het gebruik van RU/s, gegevensgebruik, indexgebruik, beperkt aanvragen en genormaliseerd RU/s-verbruik voor de geselecteerde database en container.

    Cosmos DB performance metrics in Azure portal

  4. De volgende metrische gegevens zijn beschikbaar in het deelvenster Inzichten :

    • Doorvoer : op dit tabblad ziet u het totale aantal verbruikte of mislukte aanvraageenheden (429-antwoordcode) omdat de doorvoer of opslagcapaciteit die voor de container is ingericht, is overschreden.

    • Aanvragen : op dit tabblad ziet u het totale aantal aanvragen dat wordt verwerkt per statuscode, per bewerkingstype en het aantal mislukte aanvragen (429-antwoordcode). Aanvragen mislukken wanneer de doorvoer of opslagcapaciteit die voor de container is ingericht, groter is.

    • Opslag : op dit tabblad ziet u de grootte van het gegevens- en indexgebruik gedurende de geselecteerde periode.

    • Beschikbaarheid : op dit tabblad wordt het percentage geslaagde aanvragen weergegeven ten opzichte van het totale aantal aanvragen per uur. Het succespercentage wordt gedefinieerd door de SLA's van Azure Cosmos DB.

    • Latentie : op dit tabblad ziet u de lees- en schrijflatentie die wordt waargenomen door Azure Cosmos DB in de regio waar uw account actief is. U kunt latentie visualiseren tussen regio's voor een geo-gerepliceerd account. U kunt ook latentie aan de serverzijde uitvoeren door verschillende bewerkingen. Deze metrische waarde vertegenwoordigt niet de end-to-end aanvraaglatentie.

    • Systeem : op dit tabblad ziet u hoeveel metagegevensaanvragen worden verwerkt door de primaire partitie. Het helpt ook bij het identificeren van de vertraagde aanvragen.

    • Accountbeheer : op dit tabblad ziet u de metrische gegevens voor accountbeheeractiviteiten, zoals het maken, verwijderen, sleutelupdates, netwerk- en replicatie-instellingen.

In de volgende secties worden algemene scenario's beschreven waarin u metrische gegevens van Azure Cosmos DB kunt gebruiken.

Begrijpen hoeveel aanvragen lukken of fouten veroorzaken

Om aan de slag te gaan, gaat u naar Azure Portal en gaat u naar de blade Insights . Open op deze blade het tabblad Aanvragen en toont een grafiek met het totale aantal aanvragen dat is gesegmenteerd op basis van de statuscode en het bewerkingstype. Zie HTTP-statuscodes voor Azure Cosmos DB voor meer informatie over HTTP-statuscodes.

De meest voorkomende foutcode is 429 (snelheidsbeperking/bandbreedtebeperking). Deze fout betekent dat aanvragen voor Azure Cosmos DB meer zijn dan de ingerichte doorvoer. De meest voorkomende oplossing voor dit probleem is het omhoog schalen van de RU's voor de opgegeven verzameling.

Number of requests per minute

Het doorvoerverbruik bepalen op basis van een partitiesleutelbereik

Het hebben van een goede kardinaliteit van uw partitiesleutels is essentieel voor elke schaalbare toepassing. Als u de doorvoerdistributie wilt bepalen van een gepartitioneerde container, onderverdeeld op partitiesleutelbereik-id's, gaat u naar het deelvenster Inzichten . Open het tabblad Doorvoer , het genormaliseerde RU/s-verbruik voor verschillende partitiesleutelbereiken wordt weergegeven in de grafiek.

Normalized throughput consumption by partition key range IDs

Met behulp van deze grafiek kunt u vaststellen of er een dynamische partitie is. Een ongelijkmatige doorvoerdistributie kan dynamische partities veroorzaken, wat kan leiden tot beperkte aanvragen en mogelijk moet opnieuw worden gepartitioneerd. Nadat u hebt vastgesteld welke partitiesleutel de scheefheid in de distributie veroorzaakt, moet u de container mogelijk opnieuw partitioneren met een meer gedistribueerde partitiesleutel. Zie Partitioneren en schalen in Azure Cosmos DB voor meer informatie over partitionering in Azure Cosmos DB.

Het gegevens- en indexgebruik bepalen

Het is belangrijk om de opslagdistributie van een gepartitioneerde container te bepalen op basis van gegevensgebruik, indexgebruik en documentgebruik. U kunt het indexgebruik minimaliseren, het gegevensgebruik maximaliseren en uw query's optimaliseren. Als u deze gegevens wilt ophalen, gaat u naar het deelvenster Inzichten en opent u het tabblad Opslag :

Data, index, and document consumption

Gegevensgrootte vergelijken met indexgrootte

In Azure Cosmos DB is de totale verbruikte opslag de combinatie van zowel de grootte van de gegevens als de indexgrootte. Normaal gesproken is de indexgrootte een fractie van de gegevensgrootte. Zie het artikel Indexgrootte voor meer informatie. Op de blade Metrische gegevens in Azure Portal toont het tabblad Storage de uitsplitsing van het opslagverbruik op basis van gegevens en indexen.

// Measure the document size usage (which includes the index size)  
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));
 Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

Als u indexruimte wilt besparen, kunt u het indexeringsbeleid aanpassen.

Fouten opsporen waarom query's traag worden uitgevoerd

In de SQL API SDK's biedt Azure Cosmos DB queryuitvoeringsstatistieken.

IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
 UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName),
 "SELECT * FROM c WHERE c.city = 'Seattle'",
 new FeedOptions
 {
 PopulateQueryMetrics = true,
 MaxItemCount = -1,
 MaxDegreeOfParallelism = -1,
 EnableCrossPartitionQuery = true
 }).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();

// Returns metrics by partition key range Id
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;

QueryMetrics bevat details over hoe lang elk onderdeel van de query heeft geduurd om te worden uitgevoerd. De meest voorkomende hoofdoorzaak voor langlopende query's is scans, wat betekent dat de query de indexen niet kon gebruiken. Dit probleem kan worden opgelost met een betere filtervoorwaarde.

Volgende stappen

U hebt nu geleerd hoe u problemen kunt bewaken en fouten kunt opsporen met behulp van de metrische gegevens die zijn opgegeven in Azure Portal. Misschien wilt u meer informatie over het verbeteren van de databaseprestaties door de volgende artikelen te lezen: