Beheben von Problemen mit erweiterten Diagnoseabfragen mit Azure Cosmos DB für MongoDB

GILT FÜR: NoSQL MongoDB Cassandra Gremlin

In diesem Artikel wird erläutert, wie Sie komplexere Abfragen schreiben, um mithilfe von Diagnoseprotokollen, die an Azure-Diagnose-Tabellen (Legacy) und ressourcenspezifische Tabellen (Vorschau) gesendet werden, Probleme bei Ihrem Azure Cosmos DB-Konto zu beheben.

Bei Azure-Diagnose-Tabellen werden alle Daten in eine einzige Tabelle geschrieben. Benutzer geben an, welche Kategorie sie abfragen möchten. Wenn Sie die Volltextabfrage Ihrer Anforderung anzeigen möchten, lesen Sie den Artikel Überwachen von Azure Cosmos DB-Daten mithilfe von Diagnoseeinstellungen in Azure. Darin erfahren Sie, wie Sie dieses Feature aktivieren können.

Bei ressourcenspezifischen Tabellen werden Daten in einzelne Tabellen für die jeweilige Kategorie der Ressource geschrieben. Wir empfehlen diesen Modus aus folgenden Gründen:

  • Er vereinfacht die Arbeit mit den Daten erheblich.
  • Er ermöglicht eine bessere Erkennbarkeit der Schemas.
  • Er verbessert die Leistung sowohl im Hinblick auf Erfassungslatenz als auch auf Abfragezeiten.

Allgemeine Abfragen

Allgemeine Abfragen werden in den ressourcenspezifischen und Azure-Diagnose-Tabellen angezeigt.

Top N(10) Request Unit (RU), die Anforderungen oder Abfragen in einem bestimmten Zeitrahmen verbrauchen

//Enable full-text query to view entire query text
CDBMongoRequests
| where TimeGenerated > ago(24h)
| project PIICommandText, ActivityId, DatabaseName , CollectionName, RequestCharge
| order by RequestCharge desc
| take 10

Gedrosselte Anforderungen (statusCode = „429“ oder „16500“) in einem bestimmten Zeitfenster

CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "429" or ErrorCode == "16500"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated

Anforderungen mit Zeitüberschreitung (statusCode = „50“) in einem bestimmten Zeitfenster

CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "50"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated

Abfragen mit langer Antwort (Nutzdatengröße der Serverantwort)

CDBMongoRequests
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
| summarize max(ResponseLength) by PIICommandText, RequestCharge, DurationMs, OperationName, TimeGenerated
| order by max_ResponseLength desc

RU-Verbrauch nach physischer Partition (für alle Replikate in der Replikatgruppe)

CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by toint(PartitionKeyRangeId)
| render columnchart

RU-Verbrauch nach logischer Partition (für alle Replikate in der Replikatgruppe)

CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart  

Nächste Schritte