Ü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.

Anzeigen von Insights über das Azure-Portal

  1. Melden Sie sich am Azure-Portal an, und navigieren Sie zu Ihrem Azure Cosmos DB-Konto.

  2. Sie können Ihre Kontometriken entweder im Bereich Metriken oder im Bereich Insights einsehen.

    • Metriken: Dieser Bereich bietet numerische Metriken, die in regelmäßigen Abständen erfasst werden und einen Aspekt eines Systems zu einem bestimmten Zeitpunkt beschreiben. So können Sie beispielsweise die serverseitige Latenzmetrik, die normalisierte Metrik zur Nutzung von Anforderungseinheiten usw. anzeigen und überwachen.

    • Insights: Dieser Bereich bietet eine angepasste Überwachungsbenutzeroberfläche für Azure Cosmos DB. Erkenntnisse verwenden die gleichen Metriken und Protokolle, die in Azure Monitor gesammelt werden, und zeigen eine aggregierte Ansicht für Ihr Konto an.

  3. Öffnen Sie den Bereich Insights. Standardmäßig werden im Bereich „Erkenntnisse“ die Metriken für Durchsatz, Anforderungen, Speicher, Verfügbarkeit, Latenz, System und Verwaltungsvorgänge für alle Container in Ihrem Konto angezeigt. Sie können Zeitbereiche, Datenbanken und Container auswählen, für die Sie Insights anzeigen möchten. Auf der Registerkarte Übersicht werden die RU/s-Nutzung, Datennutzung, Indexnutzung, gedrosselte Anforderungen und der normalisierte RU/s-Verbrauch für die ausgewählte Datenbank und den Container angezeigt.

    Screenshot der Azure Cosmos DB-Leistungsmetriken im Azure-Portal.

  4. Die folgenden Metriken sind im Bereich Insights verfügbar:

    • Durchsatz: Diese Registerkarte zeigt die gesamte Anzahl der genutzten oder fehlerhaften angeforderten Einheiten an (Antwortcode 429), da der Durchsatz oder die bereitgestellte Speicherkapazität für den Container überschritten wurde.

    • Requests Auf dieser Registerkarte werden die Gesamtzahl der vom Statuscode verarbeiteten Anforderungen nach Vorgangstyp und die Anzahl der fehlerhaften Anforderungen (Antwortcode 429) angezeigt. Anforderungen sind fehlerhaft, wenn der für den Container bereitgestellte Durchsatz oder die bereitgestellte Speicherkapazität überschritten wird.

    • Speicher. Auf dieser Registerkarte werden die Größe der Daten und die Indexnutzung im ausgewählten Zeitraum angezeigt.

    • Verfügbarkeit: Diese Registerkarte zeigt den Prozentsatz erfolgreicher Anforderungen der Gesamtzahl der Anforderungen pro Stunde an. Die Azure Cosmos DB-SLAs definieren die Erfolgsquote.

    • Wartezeit: Diese Registerkarte zeigt die Wartezeit beim Lesen und Schreiben an, die von Azure Cosmos DB in der Region, in der Ihr Konto ausgeführt wird, gemessen wird. Sie können die regionsübergreifende Wartezeit für ein georepliziertes Konto visualisieren. Sie können die serverseitige Latenz auch nach verschiedenen Vorgängen anzeigen. Diese Metrik stellt nicht die End-to-End-Anforderungswartezeit dar.

    • System: Diese Registerkarte zeigt an, wie viele Metadatenanforderungen die primäre Partition verarbeitet. Diese hilft auch beim Identifizieren der gedrosselten Anforderungen.

    • Verwaltungsvorgänge. Auf dieser Registerkarte werden die Metriken für Kontoverwaltungsaktivitäten wie Kontoerstellung, Löschung, Schlüsselupdates, Netzwerk und Replikationseinstellungen angezeigt.

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. 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: