Beheben von Problemen mit erweiterten Diagnoseabfragen mit Azure Cosmos DB for NoSQL
GILT FÜR: NoSQL
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 den Azure-Diagnose-Tabellen angezeigt.
Die wichtigsten N(10)-Abfragen, sortiert nach Verbrauch von Anforderungseinheiten in einem bestimmten Zeitrahmen
let topRequestsByRUcharge = CDBDataPlaneRequests
| where TimeGenerated > ago(24h)
| project RequestCharge , TimeGenerated, ActivityId;
CDBQueryRuntimeStatistics
| project QueryText, ActivityId, DatabaseName , CollectionName
| join kind=inner topRequestsByRUcharge on ActivityId
| project DatabaseName , CollectionName , QueryText , RequestCharge, TimeGenerated
| order by RequestCharge desc
| take 10
Gedrosselte Anforderungen (statusCode = 429) in einem bestimmten Zeitfenster
let throttledRequests = CDBDataPlaneRequests
| where StatusCode == "429"
| project OperationName , TimeGenerated, ActivityId;
CDBQueryRuntimeStatistics
| project QueryText, ActivityId, DatabaseName , CollectionName
| join kind=inner throttledRequests on ActivityId
| project DatabaseName , CollectionName , QueryText , OperationName, TimeGenerated
Abfragen mit längster Antwort (Nutzdatengröße der Serverantwort)
let operationsbyUserAgent = CDBDataPlaneRequests
| project OperationName, DurationMs, RequestCharge, ResponseLength, ActivityId;
CDBQueryRuntimeStatistics
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
| join kind=inner operationsbyUserAgent on ActivityId
| summarize max(ResponseLength) by QueryText
| 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 == "DBNAME" 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 == "DBNAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart
Nächste Schritte
- Weitere Informationen zum Erstellen von Diagnoseeinstellungen für Azure Cosmos DB finden Sie unter Erstellen von Diagnoseeinstellungen.
- Ausführliche Informationen zum Erstellen einer Diagnoseeinstellung über das Azure-Portal, die Azure CLI oder PowerShell finden Sie unter Erstellen von Diagnoseeinstellungen zum Sammeln von Plattformprotokollen und Metriken in Azure.