Überwachen und Debuggen mit Insights in Azure Cosmos DB

GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle

Azure Cosmos DB bietet Insights für Durchsatz, Speicher, Konsistenz, Verfügbarkeit und Latenz. Das Azure-Portal bietet eine aggregierte Ansicht dieser Metriken. Sie können Azure Cosmos DB-Metriken auch über die Azure Monitor-API anzeigen. Bei den Dimensionswerten für die Metriken, z. B. dem Containernamen, wird die Groß-/Kleinschreibung nicht berücksichtigt. Daher müssen Sie bei Zeichenfolgenvergleichen für diese Dimensionswerte Vergleiche verwenden, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird. Informationen zum Anzeigen von Metriken aus Azure Monitor finden Sie unter Überwachen von Azure Cosmos DB.

Dieser Artikel behandelt häufige Anwendungsfälle und zeigt, wie Azure Cosmos DB-Insights zum Analysieren und Beheben der Probleme verwendet werden können. Standardmäßig werden die Metrikinsights alle fünf Minuten gesammelt und sieben Tage lang aufbewahrt.

In den folgenden Abschnitten werden allgemeine Szenarios erläutert, in denen Sie Azure Cosmos DB-Metriken verwenden können.

Ermitteln der Anzahl von Anforderungen, die erfolgreich ausgeführt werden oder Fehler verursachen

Rufen Sie zunächst das Azure-Portal auf, und navigieren Sie zum Bereich Erkenntnisse. Öffnen Sie in diesem Bereich die Registerkarte Anforderungen. Auf dieser Registerkarte wird ein Diagramm mit der Gesamtzahl der Anforderungen nach Statuscode und Vorgangstyp segmentiert angezeigt. Weitere Informationen zu HTTP-Statuscodes finden Sie unter HTTP Status Codes for Azure Cosmos DB (HTTP-Statuscodes für Azure Cosmos DB).

Der häufigste Fehlerstatuscode ist 429 (Ratenbegrenzung/Drosselung). Dieser Fehler besagt, dass Anforderungen an Azure Cosmos DB den bereitgestellten Durchsatz überschreiten. Die gängigste Lösung für dieses Problem ist das Hochskalieren der Anforderungseinheiten (Request Units, RUs) für die angegebene Sammlung. Weitere Informationen finden Sie unter Einführung zum bereitgestellten Durchsatz in Azure Cosmos DB.

Screenshot der Gesamtanzahl von Anforderungen nach Statuscode, von gedrosselten Anforderungen und von Gesamtanforderungen nach Vorgangstyp.

Bestimmen des Durchsatzverbrauchs nach Partitionsschlüsselbereich

Für jede skalierbare Anwendung ist eine gute Kardinalität der Partitionsschlüssel von wesentlicher Bedeutung. Um die nach Partitionsschlüssel-Bereichs-IDs aufgeschlüsselte Verteilung des Durchsatzes jedes partitionierten Containers zu bestimmen, navigieren Sie zum Bereich Insights. Öffnen Sie die Registerkarte Durchsatz. Der normalisierte RU/s-Verbrauch für verschiedene Partitionsschlüsselbereiche wird im Diagramm angezeigt.

Screenshot der Registerkarte „Durchsatz“ mit dem RU/s-Verbrauch.

Mithilfe dieses Diagramms können Sie ermitteln, ob eine heiße Partition vorhanden ist. Die PartitionKeyRangeID-Werte entsprechen physischen Partitionen. Die Metrik Normalisierter RU-Verbrauch ist ein Wert zwischen 0 % und 100 %, der dazu dient, die Auslastung des bereitgestellten Durchsatzes für eine Datenbank oder einen Container zu messen. Eine ungleichmäßige Verteilung des Durchsatzes kann heiße Partitionen verursachen, die zu gedrosselten Anforderungen führen können und möglicherweise eine Neupartitionierung erfordern. Nachdem Sie den Partitionsschlüssel identifiziert haben, der die verzerrte Verteilung verursacht, müssen Sie möglicherweise den Container mit einem Partitionsschlüssel für eine gleichmäßigere Verteilung neu partitionieren. Weitere Informationen zum Partitionieren in Azure Cosmos DB finden Sie unter Partitionierung und horizontale Skalierung in Azure Cosmos DB.

Bestimmen der Daten- und Indexnutzung

Es ist wichtig, die Speicherverteilung von partitionierten Containern nach Datennutzung, Indexnutzung und Dokumentnutzung zu bestimmen. Sie können die Indexnutzung minimieren, die Datennutzung maximieren und Ihre Abfragen optimieren. Um diese Daten abzurufen, navigieren Sie zum Bereich Erkenntnisse, und öffnen Sie die Registerkarte Speicher.

Screenshot des Bereichs „Erkenntnisse“ mit hervorgehobener Registerkarte „Speicher“.

Vergleichen der Datengröße mit der Indexgröße

In Azure Cosmos DB ist die Summe des Speicherverbrauchs die Kombination von Datengröße und Indexgröße. In der Regel ist die Indexgröße ein Bruchteil der Datengröße. Weitere Informationen finden Sie im Artikel Indexgröße. Im Azure-Portal wird im Bereich „Metriken“ auf der Registerkarte „Speicher“ die Aufschlüsselung des Speicherverbrauchs auf der Grundlage von Daten und Index angezeigt.

// 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);

Wenn Sie Indexspeicher sparen möchten, können Sie die Indizierungsrichtlinie anpassen.

Debuggen von langsamen Abfragen

Azure Cosmos DB bietet in den SDKs der API für NoSQL Statistiken zur Ausführung von Abfragen.

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 liefert Details zur Ausführungsdauer jeder Komponente der Abfrage. Die häufigste Ursache für die zeitintensive Ausführung von Abfragen sind Überprüfungen, d. h. die Abfrage konnte die Indizes nicht anwenden. Dieses Problem kann durch eine bessere Filterbedingung behoben werden.

Überwachen von Anforderungen auf Steuerungsebene

Azure Cosmos DB wendet Grenzwerte für die Anzahl von Metadatenanforderungen an, die in aufeinanderfolgenden 5-Minuten-Intervallen erfolgen können. Bei Anforderungen auf Steuerungsebene, die diese Grenzwerte überschreiten, kann es zu einer Drosselung kommen. Metadatenanforderungen können in einigen Fällen den Durchsatz für eine master partition innerhalb eines Kontos beanspruchen, die alle Metadaten eines Kontos enthält. Bei Anforderungen auf Steuerungsebene, die den Durchsatz überschreiten, wird die Rate begrenzt (429).

Rufen Sie zunächst das Azure-Portal auf, und navigieren Sie zum Bereich Erkenntnisse. Öffnen Sie in diesem Bereich die Registerkarte System. Auf der Registerkarte „System“ werden zwei Diagramme angezeigt. Das eine zeigt alle Metadatenanforderungen für ein Konto. Das zweite zeigt den Durchsatzverbrauch von Metadatenanforderungen durch die master partition des Kontos, in der die Metadaten des Kontos gespeichert sind.

Screenshot des Bereichs „Erkenntnisse“ mit Diagramm für Metadatenanforderungen auf der Registerkarte „System“

Screenshot des Bereichs „Erkenntnisse“ mit Diagramm für Metadatenanforderungen mit Kapazitätsüberschreitung (429) auf der Registerkarte „System“

Im oben gezeigten Diagramm „Metadatenanforderung nach Statuscode“ werden Anforderungen mit zunehmend größerer Granularität aggregiert, wenn Sie den Zeitbereich vergrößern. Der größte Zeitbereich, den Sie für ein 5-Minuten-Zeitintervall verwenden können, ist 4 Stunden. Verwenden Sie Azure Metrics, um Metadatenanforderungen über einen größeren Zeitbereich mit spezifischer Granularität zu überwachen. Erstellen Sie ein neues Diagramm, und wählen Sie die Metrik „Metadatenanforderungen“ aus. Wählen Sie in der oberen rechten Ecke unter „Zeitgranularität“ den Wert „5 Minuten“ aus, wie es unten gezeigt ist. Mit Metriken können Benutzer auch Warnungen erstellen, was sie nützlicher macht als Erkenntnisse.

Screenshot des Bereichs „Metriken“ mit Metadatenanforderungen für ein Konto und einer Zeitgranularität von 5 Minuten

Nächste Schritte

In den folgenden Artikeln können Sie mehr darüber erfahren, wie Sie die Datenbankleistung verbessern: