Partage via


Surveiller et déboguer à l’aide d’insights dans Azure Cosmos DB

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table

Azure Cosmos DB fournit des insights concernant le débit, le stockage, la cohérence, la disponibilité et la latence. Le portail Azure fournit une vue agrégée de ces métriques. Vous pouvez également consulter des métriques Azure Cosmos DB à partir de l’API Azure Monitor. Les valeurs de dimension des métriques, comme le nom du conteneur, ne respectent pas la casse. Ainsi, vous devez utiliser une comparaison ne respectant pas la casse lorsque vous comparez des chaînes sur ces valeurs de dimension. Pour savoir comment afficher les métriques à partir d’Azure Monitor, consultez Surveiller Azure Cosmos DB.

Cet article présente des cas d’utilisation courants et montre comment utiliser les insights d’Azure Cosmos DB pour analyser et déboguer ces problèmes. Par défaut, les insights de métriques sont collectées toutes les cinq minutes et sont pendant sept jours.

Afficher les insights du portail Azure

  1. Connectez-vous au portail Azure et accédez à votre compte Azure Cosmos DB.

  2. Vous pouvez afficher les métriques de votre compte dans le volet Métriques ou Insights.

    • Métriques : ce volet fournit des métriques numériques collectées à intervalles réguliers et décrit un certain aspect d’un système à un moment donné. Par exemple, vous pouvez afficher et surveiller la métrique de latence côté serveur, la métrique d’utilisation d’unités de requête normalisée, etc.

    • Insights : ce volet offre une expérience de surveillance personnalisée pour Azure Cosmos DB. Insights utilise les métriques et journaux collectés dans Azure Monitor, et fournit un affichage agrégé de votre compte.

  3. Ouvrez le volet Insights. Le volet Insights affiche par défaut les métriques de débit, de demandes, du stockage, de la disponibilité, de la latence, du système et d’opérations de gestion pour chaque conteneur dans votre compte. Vous pouvez sélectionner l’Intervalle de temps, la Base de données et le Conteneur pour lesquels vous voulez afficher des insights. L’onglet Vue d’ensemble montre l’utilisation des unités de requête par seconde (UR/s), l’utilisation des données, l’utilisation des index, les demandes limitées et la consommation d’UR/s normalisée pour la base de données et le conteneur sélectionnés.

    Capture d’écran des métriques de performances Azure Cosmos DB dans le portail Azure.

  4. Les métriques suivantes sont disponibles dans le volet Insights :

    • Débit. Cet onglet affiche le nombre total d’unités de requête consommées ou échouées (code de réponse 429) en raison d’un dépassement des capacités de débit ou de stockage approvisionnées pour le conteneur.

    • Requests. Cet onglet affiche le nombre total de requêtes traitées par code d’état et par type d’opération, ainsi que le nombre de requêtes ayant échoué (code de réponse 429). Les requêtes échouent en cas de dépassement du débit ou la capacité de stockage approvisionnés pour le conteneur.

    • Stockage. Cet onglet affiche la taille des données et l’utilisation des index sur la période sélectionnée.

    • Disponibilité. Cet onglet affiche le pourcentage de requêtes réussies par rapport au nombre total de requêtes par heure. Les contrats de niveau de service (SLA, Service Level Agreements) Azure Cosmos DB définissent le taux de réussite.

    • Latence. Cet onglet affiche la latence de lecture et d’écriture observée par Azure Cosmos DB dans la région où votre compte opère. Vous pouvez visualiser la latence entre les régions pour un compte géorépliqué. Vous pouvez également visualiser la latence côté serveur pour différentes opérations. Cette métrique ne représente pas la latence des demandes de bout en bout.

    • Système. Cet onglet affiche le nombre de requêtes de métadonnées envoyées par la partition principale. Elle permet également d’identifier les demandes limitées.

    • Opérations de gestion. Cet onglet affiche les métriques des activités de gestion du compte, telles que sa création, sa suppression, les mises à jour clés, le réseau et les paramètres de réplication.

Les sections suivantes décrivent des scénarios courants où vous pouvez utiliser les métriques Azure Cosmos DB.

Connaître le nombre de requêtes ayant abouti ou ayant provoqué une erreur

Pour commencer, accédez au portail Azure, puis au volet Insights. Dans ce volet, ouvrez l’onglet Requêtes. Celui-ci affiche un graphique présentant le nombre total de requêtes segmentées par code d’état et par type d’opération. Pour plus d’informations sur les codes d’état HTTP, consultez Codes d’état HTTP pour Azure Cosmos DB.

Le code d’état d’erreur le plus courant est 429 (limitation du débit). Cette erreur signifie que les requêtes envoyées à Azure Cosmos DB sont supérieures au débit provisionné. Dans ce cas, la solution la plus courante consiste à effectuer une montée en puissance des unités de requête pour une collection donnée. Pour plus d’informations, consultez Présentation du débit approvisionné dans Azure Cosmos DB

Capture d’écran montrant le nombre total de requêtes par code d’état, les demandes limitées et le nombre total de requêtes par type d’opération.

Déterminer la consommation de débit par une plage de clés de partition

Il est essentiel d’avoir une bonne cardinalité des clés de partition pour vos applications évolutives. Pour déterminer la distribution du débit d’un conteneur partitionné, ventilée par ID de plage de clés de partition, accédez au volet Insights. Ouvrez l’onglet Débit. La consommation normalisée d’unités de requête par seconde à travers les différentes plages de clés de partition est présentée dans le graphique.

Capture d’écran de l’onglet Débit montrant la consommation d’unités de requête par seconde.

Ce graphique vous permet de déterminer s’il existe une partition chaude. Une distribution inégale du débit peut provoquer des partitions chaudes. Cela peut entraîner des limitations de requêtes et nécessiter un repartitionnement. Une fois que vous avez identifié la clé de partition à l’origine du déséquilibre de distribution, il est possible que vous deviez repartitionner votre conteneur avec une clé de partition plus distribuée. Pour plus d’informations sur le partitionnement dans Azure Cosmos DB, consultez Partitionnement et mise à l’échelle horizontale dans Azure Cosmos DB.

Déterminer l’utilisation des données et des index

Il est important de déterminer la distribution du stockage de tout conteneur partitionné par utilisation de données, d’index et de documents. Vous pouvez réduire l’utilisation des index, maximiser l’utilisation des données et optimiser vos requêtes. Pour obtenir ces données, accédez au volet Insights et ouvrez l’onglet Stockage.

Capture d’écran du volet Insights mettant en évidence l’onglet Stockage.

Comparer la taille des données et la taille de l’index

Dans Azure Cosmos DB, la consommation totale de stockage correspond à la somme de la taille des données et de la taille de l’index. En règle générale, la taille de l’index correspond à une fraction de la taille des données. Pour plus d’informations, consultez l’article Taille de l’index. Dans le volet Métriques du portail Azure, l’onglet Stockage présente la répartition de la consommation de stockage basée sur les données et l’index.

// Measure the document size usage (which includes the index size)  
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));
 Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

Si vous souhaitez conserver de l’espace d’index, vous pouvez ajuster la stratégie d’indexation.

Déboguer les requêtes lentes

Dans les SDK de l’API pour NoSQL, Azure Cosmos DB fournit des statistiques relatives à l’exécution des requêtes.

IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
 UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName),
 "SELECT * FROM c WHERE c.city = 'Seattle'",
 new FeedOptions
 {
 PopulateQueryMetrics = true,
 MaxItemCount = -1,
 MaxDegreeOfParallelism = -1,
 EnableCrossPartitionQuery = true
 }).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();

// Returns metrics by partition key range Id
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;

QueryMetrics fournit des informations détaillées sur la durée d’exécution de chaque composant de la requête. Les analyses sont la cause racine la plus courante des longues exécutions de requêtes. Cela signifie que la requête n’a pas pu appliquer les index. Ce problème peut être résolu avec une meilleure condition de filtre.

Superviser les demandes de plan de contrôle

Azure Cosmos DB applique des limites au nombre de demandes de métadonnées qui peuvent être effectuées à intervalles consécutifs de 5 minutes. Les demandes de plan de contrôle qui dépassent ces limites peuvent subir une limitation. Dans certains cas, les demandes de métadonnées peuvent consommer un débit par rapport à une master partition au sein d’un compte qui contient toutes les métadonnées d’un compte. Les demandes de plan de contrôle qui dépassent la quantité de débit subissent une limitation du débit (429 s).

Pour commencer, accédez au portail Azure, puis au volet Insights. Dans ce volet, ouvrez l’onglet Système. L’onglet Système affiche deux graphiques. Un qui affiche toutes les demandes de métadonnées pour un compte. Le second montre la consommation de débit des demandes de métadonnées à partir du master partition du compte qui stocke les métadonnées d’un compte.

Capture d’écran du volet Insights, avec mise en évidence du graphique des demandes de métadonnées sous l’onglet Système.

Capture d’écran du volet Insights, avec mise en évidence du graphique 429 des demandes de métadonnées sous l’onglet Système.

Le graphique Demande de métadonnées par code d’état ci-dessus agrège les demandes à une granularité accrue à mesure que vous augmentez l’intervalle de temps. Le plus grand intervalle de temps que vous pouvez utiliser pour une classe de temps de 5 minutes est de 4 heures. Pour superviser les demandes de métadonnées sur un intervalle de temps plus large avec une granularité spécifique, utilisez les métriques Azure. Créez un graphique et sélectionnez la métrique Demandes de métadonnées. Dans le coin supérieur droit, sélectionnez une granularité temporelle de 5 minutes, comme indiqué ci-dessous. Les métriques permettent également aux utilisateurs de créer des alertes sur eux, ce qui les rend plus utiles que les insights.

Capture d’écran du volet Métriques, avec mise en évidence des demandes de métadonnées d’un compte avec une granularité temporelle de 5 minutes.

Étapes suivantes

Vous pouvez en savoir plus sur l’amélioration des performances de bases de données en lisant les articles suivants :