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
- Pour plus d’informations sur la façon de créer des paramètres de diagnostic pour Cosmos DB, consultez Créer des paramètres de diagnostic.
- Pour obtenir des informations détaillées sur la création d’un paramètre de diagnostic à l’aide du portail Azure, de l’interface Azure CLI ou de PowerShell, consultez Créer des paramètres de diagnostic pour collecter des journaux et métriques de plateforme dans Azure.