Partager via


Résoudre les problèmes liés aux requêtes de diagnostic avancées avec Azure Cosmos DB for MongoDB

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin

Dans cet article, nous allons voir comment écrire des requêtes plus avancées pour vous aider à résoudre les problèmes de votre compte Azure Cosmos DB en utilisant les journaux de diagnostic envoyés aux tables Diagnostics Azure (hérité) et spécifiques aux ressources.

Pour les tables Diagnostics Azure, toutes les données sont écrites dans une seule table. Les utilisateurs spécifient la catégorie qu’ils veulent interroger. Si vous souhaitez voir la requête de texte intégral de votre requête, consultez Superviser les données Azure Cosmos DB en utilisant des paramètres de diagnostic dans Azure pour savoir comment activer cette fonctionnalité.

Pour les tables spécifiques aux ressources, les données sont écrites dans des tables individuelles pour chaque catégorie de la ressource. Nous recommandons ce mode parce qu’il :

  • Facilite beaucoup l’utilisation des données
  • Offre une meilleure découvrabilité des schémas
  • Améliore les performances au niveau de la latence d’ingestion et des délais de requêtes

Requêtes courantes

Les requêtes courantes sont affichées dans les tables spécifiques aux ressources et Diagnostics Azure.

N(10) premières unités de requête (RU) consommant des requêtes ou des demandes dans un laps de temps spécifique

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

Requêtes limitées (statusCode = 429 ou 16500) dans une fenêtre de temps spécifique

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

Requêtes expirées (statusCode = 50) dans une fenêtre de temps spécifique

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

Requêtes avec réponse longue (taille de charge utile de la réponse du serveur)

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

Consommation de RU par partition physique (sur tous les réplicas du jeu de réplicas)

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

Consommation de RU par partition logique (sur tous les réplicas du jeu de réplicas)

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  

Étapes suivantes