Résoudre les problèmes liés aux requêtes de diagnostic
S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table
Dans cet article, nous aborderons l’écriture de requêtes simples pour vous aider à résoudre les problèmes liés à votre compte Azure Cosmos DB à l’aide des journaux de diagnostic envoyés à AzureDiagnostics (hérité) et aux tables spécifiques aux ressources (préversion).
Pour les tables Diagnostics Azure, toutes les données sont écrites dans une seule table et les utilisateurs doivent spécifier la catégorie à interroger.
Pour les tables spécifiques aux ressources, les données sont écrites dans des tables individuelles pour chaque catégorie de la ressource (non disponible pour l’API de table). Nous recommandons ce mode, car il simplifie considérablement l’utilisation des données, fournit une meilleure détectabilité des schémas et améliore les performances de la latence et des délais d’interrogation de l’ingestion.
Requêtes courantes
Voici une liste des requêtes de résolution de problèmes courantes.
Rechercher les opérations dont l’exécution prend plus de 3 millisecondes
Recherchez les opérations dont la durée est supérieure à 3 millisecondes.
AzureDiagnostics
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by clientIpAddress_s, TimeGenerated
Rechercher les agents utilisateur qui exécutent des opérations
Recherchez les agents utilisateur associés à chaque opération.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by OperationName, userAgent_s
Rechercher les opérations de longue durée
Recherchez les opérations qui ont été exécutées pendant une longue période en effectuant une quantification de leur exécution par intervalles de cinq secondes.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| project TimeGenerated , duration_s
| summarize count() by bin(TimeGenerated, 5s)
| render timechart
Obtenir des statistiques de clé de partition pour évaluer le décalage entre les trois partitions principales pour un compte de base de données
Mesurez le décalage en obtenant des statistiques courantes pour les partitions physiques.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId
Obtenir les frais de requête pour les requêtes coûteuses
Mesurez les frais de requête (en RU) pour les requêtes les plus volumineuses.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 10.0
| project activityId_g, requestCharge_s
| join kind= inner (
AzureDiagnostics
| where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
| project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100
Rechercher les opérations qui consomment le plus de RU/s
Triez les opérations en fonction de la quantité de RU/s qu’elles utilisent.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(responseLength_s), max(requestLength_s), max(requestCharge_s), count = count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)
Obtenir toutes les requêtes qui consomment plus de 100 RU/s
Recherchez les requêtes qui consomment plus de RU/s qu’une quantité de référence.
Cette requête joint les données de DataPlaneRequests
et QueryRunTimeStatistics
.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 100.0
| project activityId_g, requestCharge_s
| join kind= inner (
AzureDiagnostics
| where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
| project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100
Obtenir les frais de requête et la durée d’exécution d’une requête
Obtenez des statistiques sur les frais de requête et la durée d’une requête spécifique.
AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "QueryRuntimeStatistics"
| join (
AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "DataPlaneRequests"
) on $left.activityId_g == $right.activityId_g
| project databasename_s, collectionname_s, OperationName1 , querytext_s,requestCharge_s1, duration_s1, bin(TimeGenerated, 1min)
Obtenir la distribution pour différentes opérations
Regroupez les opérations en fonction de la distribution des ressources.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize count = count() by OperationName, requestResourceType_s, bin(TimeGenerated, 1h)
Obtenir le débit maximal consommé par une partition
Obtenez le débit maximal pour une partition physique.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g
Obtenir les informations sur la consommation des clés de partition en RU/s
Mesurez la consommation en RU/s par clé de partition.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s, TimeGenerated
| order by TimeGenerated asc
Obtenir les frais de requête pour une clé de partition spécifique
Mesurez les frais de demande par clé de partition.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where parse_json(partitionKey_s)[0] == "2"
Obtenir les principales clés de partition avec la plus grande consommation en RU/s au cours d’une période donnée
Triez les clés de partition en fonction de la consommation en unités de requête dans une fenêtre de temps.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where TimeGenerated >= datetime("11/26/2019, 11:20:00.000 PM") and TimeGenerated <= datetime("11/26/2019, 11:30:00.000 PM")
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s
| order by total desc
Obtenir les journaux des clés de partition dont la taille de stockage est supérieure à 8 Go
Recherchez les journaux des clés de partition filtrés par taille de stockage par clé de partition.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000
Obtenir des latences P99 ou P50 pour les opérations, la charge de requête ou la durée de la réponse
Mesurez les performances pour la latence de l’opération, l’utilisation en RU/s et la longueur de la réponse.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2d)
| summarize percentile(todouble(responseLength_s), 50), percentile(todouble(responseLength_s), 99), max(responseLength_s), percentile(todouble(requestCharge_s), 50), percentile(todouble(requestCharge_s), 99), max(requestCharge_s), percentile(todouble(duration_s), 50), percentile(todouble(duration_s), 99), max(duration_s), count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)
Obtenir les journaux du plan de contrôle
Obtenez les journaux du plan de contrôle long en utilisant ControlPlaneRequests
.
Conseil
N’oubliez pas d’activer l’indicateur décrit dans Désactiver l’accès en écriture aux métadonnées basé sur les clés et exécutez les opérations en utilisant Azure PowerShell, l’interface CLI Azure ou Azure Resource Manager.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| summarize by OperationName
Étapes suivantes
- Si vous souhaitez en savoir plus sur la procédure de création de paramètres de diagnostic pour Azure Cosmos DB, veuillez consulter la rubrique Création de paramètres de diagnostic.
- Si vous souhaitez en savoir plus sur la création d’un paramètre de diagnostic à l’aide du Portail Azure, de l’interface CLI ou de PowerShell, veuillez consulter la rubrique Créer un paramètre de diagnostic pour collecter des journaux et métriques de plateforme dans Azure.