

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Surveillance des instances de base de données
<a name="db-instance-monitoring"></a>

Une [https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.html) de base de données est l'élément de base d'Amazon RDS. Il s'agit d'un environnement de base de données isolé qui s'exécute dans le cloud. Pour les bases de données MySQL et MariaDB, l'instance de base de données est [le](https://dev.mysql.com/doc/refman/8.0/en/mysqld.html) programme mysqld, également connu sous le nom de serveur MySQL, qui inclut plusieurs threads et composants tels que l'analyseur SQL, l'optimiseur de requêtes, le gestionnaire, les variables système et d'état thread/connection , et un ou plusieurs moteurs de stockage enfichables. Chaque moteur de stockage est conçu pour prendre en charge un cas d'utilisation spécifique. Le moteur de stockage par défaut et recommandé est [InnoDB](https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html), un moteur de base de données relationnelle transactionnel à usage général conforme au modèle ACID (atomicité, cohérence, isolation et durabilité). InnoDB propose [des structures en mémoire](https://dev.mysql.com/doc/refman/8.0/en/innodb-in-memory-structures.html) (pool de mémoire tampon, tampon de modification, index de hachage adaptatif, tampon de journal) ainsi que des [structures sur disque](https://dev.mysql.com/doc/refman/8.0/en/innodb-on-disk-structures.html) (espaces de table, tables, index, journal d'annulation, journal de rétablissement, fichiers tampons à double écriture). Pour garantir que votre base de données adhère étroitement au modèle ACID, le [moteur de stockage InnoDB met en œuvre de nombreuses](https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html) fonctionnalités pour protéger vos données, notamment les transactions, le commit, le rollback, la reprise après incident, le verrouillage au niveau des lignes et le contrôle de la simultanéité multiversion (MVCC).

Tous ces composants internes d'une instance de base de données fonctionnent conjointement pour aider à maintenir la disponibilité, l'intégrité et la sécurité de vos données au niveau de performance attendu et satisfaisant. En fonction de votre charge de travail, chaque composant et fonctionnalité peut imposer des exigences en termes de ressources au niveau du processeur, de la mémoire, du réseau et des sous-systèmes de stockage. Lorsqu'une augmentation de la demande pour une ressource spécifique dépasse la capacité allouée ou les limites logicielles pour cette ressource (imposées par les paramètres de configuration ou par la conception du logiciel), l'instance de base de données peut subir une dégradation des performances ou une indisponibilité et une corruption complètes. Il est donc essentiel de mesurer et de surveiller ces composants internes, de les comparer aux valeurs de référence définies et de générer des alertes si les valeurs surveillées s'écartent des valeurs attendues.

Comme décrit précédemment, vous pouvez utiliser différents [outils](monitoring-tools.md) pour surveiller vos instances MySQL et MariaDB. Nous vous recommandons d'utiliser Amazon RDS Performance Insights et les CloudWatch outils de surveillance et d'alerte, car ces outils sont intégrés à Amazon RDS, collectent des métriques haute résolution, présentent les dernières informations de performance en temps quasi réel et génèrent des alarmes.

Quel que soit votre outil de surveillance préféré, nous vous recommandons d'[activer le schéma de performance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.EnableMySQL.html) dans vos instances de base de données MySQL et MariaDB. Le [schéma de performance](https://dev.mysql.com/doc/refman/8.0/en/performance-schema.html) est une fonctionnalité optionnelle permettant de surveiller le fonctionnement du serveur MySQL (l'instance de base de données) à un niveau bas. Il est conçu pour avoir un impact minimal sur les performances globales de la base de données. Vous pouvez gérer cette fonctionnalité à l'aide du `performance_schema` paramètre. Bien que ce paramètre soit facultatif, vous devez l'utiliser pour collecter des métriques haute résolution (une seconde) par SQL, des métriques de session active, des événements d'attente et d'autres informations de surveillance détaillées de bas niveau, collectées par Amazon RDS Performance Insights.

**Sections**
+ [Mesures Performance Insights pour les instances de base de données](db-instance-performance-insights.md)
+ [CloudWatch métriques pour les instances de base de données](db-instance-cloudwatch-metrics.md)
+ [Publication des indicateurs de Performance Insights sur CloudWatch](publishing-performance-insights-to-cloudwatch.md)

# Mesures Performance Insights pour les instances de base de données
<a name="db-instance-performance-insights"></a>

Performance Insights surveille différents types de mesures, comme indiqué dans les sections suivantes.

## Charge de base de données
<a name="dbload"></a>

Le chargement de la base de données (`DBLoad`) est un indicateur clé de Performance Insights qui mesure le niveau d'activité de votre base de données. Il est collecté chaque seconde et publié automatiquement sur Amazon CloudWatch. Il représente l'activité de l'instance de base de données dans le nombre moyen de sessions actives (AAS), c'est-à-dire le nombre de sessions exécutant simultanément des requêtes SQL. La `DBLoad` métrique est différente des autres métriques de séries chronologiques, car elle peut être interprétée à l'aide de l'une des cinq dimensions suivantes : temps d'attente, SQL, hôtes, utilisateurs et bases de données. Ces dimensions sont des sous-catégories de la `DBLoad` métrique. Vous pouvez les utiliser sous forme de *tranches par* catégories pour représenter les différentes caractéristiques de la charge de base de données. Pour une description détaillée de la façon dont nous calculons la charge de base de données, consultez la section [Charge de base](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.ActiveSessions.html) de données dans la documentation Amazon RDS.

L'illustration d'écran suivante montre l'outil Performance Insights.

![\[Chargement de la base de données dans l'outil Performance Insights\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/database-load.png)


## Dimensions
<a name="dimensions"></a>
+ Les *événements d'attente* sont des conditions dans lesquelles une session de base de données attend la fin d'une ressource ou d'une autre opération afin de poursuivre son traitement. Si vous exécutez une instruction SQL telle que `SELECT * FROM big_table` et si cette table est beaucoup plus grande que le pool de tampons InnoDB alloué, votre session attendra probablement les événements d'`wait/io/file/innodb/innodb_data_file`attente, qui sont provoqués par des I/O opérations physiques sur le fichier de données. Les événements d'attente constituent une dimension importante pour la surveillance des bases de données, car ils indiquent d'éventuels problèmes de performance. Les événements d'attente indiquent les ressources et les opérations que les instructions SQL que vous exécutez au cours des sessions passent le plus de temps à attendre. Par exemple, l'`wait/synch/mutex/innodb/trx_sys_mutex`événement se produit lorsque l'activité de la base de données est élevée avec un grand nombre de transactions, et l'`wait/synch/mutex/innodb/buf_pool_mutex`événement se produit lorsqu'un thread a acquis un verrou sur le pool de mémoire tampon d'InnoDB pour accéder à une page en mémoire. Pour plus d'informations sur tous les événements d'attente MySQL et MariaDB, [consultez les tableaux récapitulatifs des événements d'attente](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-wait-summary-tables.html) dans la documentation MySQL. Pour comprendre comment interpréter les noms d'instruments, consultez les [conventions de dénomination des instruments du schéma de performance](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-instrument-naming.html) dans la documentation MySQL.
+ *SQL* indique les instructions SQL qui contribuent le plus à la charge totale de la base de données. Le tableau des **principales dimensions**, qui se trouve sous le graphique de **charge de la base** de données d'Amazon RDS Performance Insights, est interactif. Vous pouvez obtenir une liste détaillée des événements d'attente associés à l'instruction SQL en cliquant sur la barre dans la colonne **Load by waits (AAS)**. Lorsque vous sélectionnez une instruction SQL dans la liste, Performance Insights affiche les événements d'attente associés dans le graphique de **charge de la base** de données et le texte de l'instruction SQL dans la section de **texte SQL**. Les statistiques SQL sont affichées sur le côté droit du tableau des **principales dimensions**.
+ *Les hôtes* affichent les noms d'hôte des clients connectés. Cette dimension vous permet d'identifier les hôtes clients qui envoient la majeure partie de la charge à la base de données.
+ *Les utilisateurs* regroupent la charge de base de données en fonction des utilisateurs connectés à la base de données.
+ Les *bases de données* regroupent la charge de base de données selon le nom de la base de données à laquelle le client est connecté.

## Métriques de compteur
<a name="counter-metrics"></a>

Les contre-métriques sont des métriques cumulatives dont les valeurs ne peuvent être augmentées ou remises à zéro que lorsque l'instance de base de données redémarre. La valeur d'une contre-métrique ne peut pas être réduite à sa valeur précédente. Ces métriques représentent un compteur unique qui augmente de façon monotone.
+ Les [compteurs natifs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.MySQL.Native) sont des métriques définies par le moteur de base de données et non par Amazon RDS. Par exemple :
  + `SQL.Innodb_rows_inserted`représente le nombre de lignes insérées dans les tables InnoDB.
  + `SQL.Select_scan`représente le nombre de jointures ayant effectué une analyse complète de la première table.
  + `Cache.Innodb_buffer_pool_reads`représente le nombre de lectures logiques que le moteur InnoDB n'a pas pu récupérer depuis le pool de mémoire tampon et a dû lire directement depuis le disque.
  + `Cache.Innodb_buffer_pool_read_requests`représente le nombre de demandes de lecture logiques.

  Pour les définitions de toutes les métriques natives, consultez la section [Variables d'état du serveur](https://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html) dans la documentation MySQL.
+ Les [compteurs non natifs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.MySQL.NonNative) sont définis par Amazon RDS. Vous pouvez obtenir ces mesures à l'aide d'une requête spécifique ou les dériver en utilisant au moins deux mesures natives dans les calculs. Les indicateurs de compteur non natifs peuvent représenter des latences, des ratios ou des taux de réussite. Par exemple :
  + `Cache.innoDB_buffer_pool_hits`représente le nombre d'opérations de lecture qu'InnoDB a pu récupérer depuis le pool de mémoire tampon sans utiliser le disque. Il est calculé à partir des métriques de compteur natives comme suit :

    ```
    db.Cache.Innodb_buffer_pool_read_requests - db.Cache.Innodb_buffer_pool_reads
    ```
  + `IO.innoDB_datafile_writes_to_disk`représente le nombre d'opérations d'écriture de fichiers de données InnoDB sur le disque. Il capture uniquement les opérations sur les fichiers de données, et non les opérations d'écriture en double écriture ou en journalisation à nouveau. Il est calculé comme suit :

    ```
    db.IO.Innodb_data_writes - db.IO.Innodb_log_writes - db.IO.Innodb_dblwr_writes
    ```

Vous pouvez visualiser les métriques des instances de base de données directement dans le tableau de bord Performance Insights. Choisissez **Gérer les mesures**, cliquez sur l'onglet **Mesures de base** de données, puis sélectionnez les mesures qui vous intéressent, comme indiqué dans l'illustration suivante.

![\[Sélection des métriques d'instance de base de données dans Performance Insights\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/selecting-metrics.png)


Cliquez sur le bouton **Mettre à jour le graphique** pour afficher les mesures que vous avez sélectionnées, comme indiqué dans l'illustration suivante.

![\[Affichage des métriques des instances de base de données dans Performance Insights\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/selecting-metrics-results.png)


## Statistiques SQL
<a name="sql-stats"></a>

Performance Insights rassemble des mesures relatives aux performances relatives aux requêtes SQL pour chaque seconde d'exécution d'une requête et pour chaque appel SQL. En général, Performance Insights collecte des [statistiques SQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.html) au niveau des instructions et du résumé. Toutefois, pour les instances de base de données MariaDB et MySQL, les statistiques sont collectées uniquement au niveau du condensé.
+ Les statistiques Digest sont une métrique composite de toutes les requêtes qui ont le même modèle mais qui ont finalement des valeurs littérales différentes. Le condensé remplace des valeurs littérales spécifiques par une variable, par exemple :

  ```
  SELECT department_id, department_name FROM departments WHERE location_id = ?
  ```
+ Certaines métriques représentent les statistiques *par seconde* pour chaque instruction SQL digérée. Par exemple, `sql_tokenized.stats.count_star_per_sec` représente les appels par seconde (c'est-à-dire le nombre de fois par seconde où l'instruction SQL a été exécutée).
+ Performance Insights inclut également des métriques qui fournissent des statistiques *par appel* pour une instruction SQL. Par exemple, `sql_tokenized.stats.sum_timer_wait_per_call` indique la latence moyenne de l'instruction SQL par appel, en millisecondes.

Les statistiques SQL sont disponibles dans le tableau de bord Performance Insights, dans l'onglet **Top SQL** du tableau des **principales dimensions**.

![\[Statistiques SQL\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/sql-stats.png)


# CloudWatch métriques pour les instances de base de données
<a name="db-instance-cloudwatch-metrics"></a>

Amazon contient CloudWatch également des métriques qu'Amazon RDS publie automatiquement. [Les métriques qui résident dans l'`AWS/RDS`espace de noms sont des *métriques au niveau de l'instance*, qui font référence à l'instance Amazon RDS (c'est-à-dire à l'environnement de base de données isolé exécuté dans le cloud) plutôt qu'à l'instance de base de données au sens strict du processus mysqld.](https://dev.mysql.com/doc/refman/8.0/en/mysqld.html) Par conséquent, la plupart de ces [mesures par défaut](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html) entrent dans la catégorie des métriques du système d'exploitation, au sens strict du terme. Les exemples incluent :`CPUUtilization`,`WriteIOPS`,`SwapUsage`, et autres. Néanmoins, certaines métriques d'instance de base de données sont applicables à MariaDB et MySQL :
+ `BinLogDiskUsage`— La quantité d'espace disque occupée par les journaux binaires.
+ `DatabaseConnections`— Le nombre de connexions réseau client à l'instance de base de données.
+ `ReplicaLag`— Durée pendant laquelle une instance de base de données de réplique en lecture est en retard par rapport à l'instance de base de données source.

# Publication des indicateurs de Performance Insights sur CloudWatch
<a name="publishing-performance-insights-to-cloudwatch"></a>

Amazon RDS Performance Insights surveille la plupart des métriques et dimensions des instances de base de données et les met à disposition via le tableau de [bord Performance Insights de](https://console.aws.amazon.com/rds/home#performance-insights-v20206:) la console AWS de gestion. Ce tableau de bord convient parfaitement au dépannage des bases de données et à l'analyse des causes premières. Cependant, il n'est pas possible de créer des alarmes dans Performance Insights pour les mesures liées aux performances. Si vous souhaitez créer des alarmes basées sur les indicateurs de Performance Insights, ces indicateurs doivent être intégrés CloudWatch.

Performance Insights [publie automatiquement les indicateurs sur CloudWatch](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Cloudwatch.html). Vous pouvez interroger les mêmes données à partir de Performance Insights, mais l'intégration des métriques CloudWatch facilite l'ajout d' CloudWatch alarmes et l'ajout des métriques aux CloudWatch tableaux de bord existants. Les [compteurs sont des](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html) indicateurs de performance du système d'exploitation et de la base de données, tels que `os.memory.free` ou`db.Locks.Innodb_row_lock_time`. La collecte des métriques du système d'exploitation dépend du paramètre de surveillance améliorée. Si la surveillance améliorée est désactivée, les métriques du système d'exploitation sont collectées une fois par minute. Si la surveillance améliorée est activée, les métriques du système d'exploitation sont collectées pour la période sélectionnée. Pour plus d'informations, consultez la section [Activation et désactivation de la surveillance améliorée](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.Enabling.html#USER_Monitoring.OS.Enabling.Procedure) dans la documentation Amazon RDS.

Performance Insights vous permet [d'exporter le tableau de bord des métriques préconfiguré ou personnalisé](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PI_metrics_export_CW.html) pour votre instance de base de données vers CloudWatch. Vous pouvez exporter le tableau de bord des métriques en tant que nouveau tableau de bord ou l'ajouter à un CloudWatch tableau de bord existant. L'exportation du tableau de bord des métriques Performance Insights vers le CloudWatch tableau de bord vous donne une vue unifiée et globale de l'état de votre système en fournissant une vue d'ensemble des métriques associées aux différentes ressources de votre système, telles que les instances EC2, les ressources Amazon Elastic File System (Amazon EFS) et les ressources Elastic Load Balancing (ELB), ainsi que les métriques de votre instance de base de données.

Vous pouvez utiliser la fonction mathématique des CloudWatch `DB_PERF_INSIGHTS` métriques pour interroger et créer des alarmes et des graphiques basés sur les métriques Performance Insights provenant de CloudWatch. Pour créer une alarme sur une métrique Performance Insights, suivez les instructions de la [CloudWatch documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_alarm_database_performance_insights.html). Par exemple, si vous souhaitez déclencher une alarme lorsque le total des transactions actives dans votre instance de base de données atteint un seuil spécifique, suivez les instructions de cette page, utilisez l'expression `DB_PERF_INSIGHTS` mathématique suivante, puis choisissez **Appliquer** :

```
DB_PERF_INSIGHTS('RDS', 'db-BQ2TPYY7HG2GDFC7APMB3BVB3M', 'db.Transactions.active_transactions.avg')
```

où `db-BQ2TPYY7HG2GDFC7APMB3BVB3M` est l'ID de ressource de votre instance de base de données. Spécifiez la période (par exemple, 1 minute) et les conditions (par exemple, supérieure à 1 000). Pour finaliser la création de l'alarme, configurez les actions de l'alarme, ajoutez un nom et une description, puis prévisualisez et créez l'alarme.