Activer la journalisation des requêtes pour votre cluster de bases de données Aurora PostgreSQL. - Amazon Aurora

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.

Activer la journalisation des requêtes pour votre cluster de bases de données Aurora PostgreSQL.

Vous pouvez collecter des informations plus détaillées sur les activités de votre base de données, notamment les requêtes, les requêtes en attente de verrouillage, les points de contrôle et de nombreux autres détails en définissant certains des paramètres répertoriés dans le tableau suivant. Cette rubrique se concentre sur la journalisation des requêtes.

Paramètre Par défaut Description

log_connections

Enregistre toutes les connexions réussies. Pour savoir comment utiliser ce paramètre avec log_disconnections pour détecter les pertes de connexion, consultez Gestion de l'abandon des connexions d'Aurora PostgreSQL avec regroupement des connexions .

log_disconnections

Journalise la fin de chaque session et sa durée. Pour savoir comment utiliser ce paramètre avec log_connections pour détecter les pertes de connexion, consultez Gestion de l'abandon des connexions d'Aurora PostgreSQL avec regroupement des connexions .

log_checkpoints

Non applicable à Aurora PostgreSQL

log_lock_waits

Enregistre les longs temps d'attente pour l'acquisition d'un verrou. Ce paramètre n'est pas défini par défaut.

log_min_duration_sample

(ms) Définit la durée minimum d'exécution au-delà de laquelle les instructions sont journalisées. La taille de l'échantillon est définie à l'aide du paramètre log_statement_sample_rate.

log_min_duration_statement

Toute instruction SQL exécutée au moins pendant la durée spécifiée ou plus est journalisée. Ce paramètre n'est pas défini par défaut. L'activation de ce paramètre peut vous aider à identifier les requêtes non optimisées.

log_statement

Définit le type d'instructions enregistrées. Par défaut, ce paramètre n'est pas défini, mais vous pouvez le modifier pour all, ddl ou mod afin de spécifier les types d'instructions SQL que vous souhaitez journaliser. Si vous spécifiez autre chose que none pour ce paramètre, vous devez également prendre des mesures supplémentaires pour empêcher l'exposition des mots de passe dans les fichiers journaux. Pour de plus amples informations, veuillez consulter Atténuation du risque d'exposition des mots de passe lors de l'utilisation de la journalisation de requêtes.

log_statement_sample_rate

Le pourcentage d'instructions dépassant la durée spécifiée dans log_min_duration_sample pour être journalisées, exprimé sous la forme d'une valeur à virgule flottante comprise entre 0,0 et 1,0.

log_statement_stats

Ecrit les statistiques de performance cumulées dans le journal du serveur.

Utilisation de la journalisation pour détecter les requêtes lentes

Vous pouvez journaliser les instructions et les requêtes SQL pour favoriser la recherche des requêtes lentes. Vous pouvez activer cette fonctionnalité en modifiant les valeurs des paramètres log_statement et log_min_duration, comme indiqué dans cette section. Avant d'activer la journalisation des requêtes pour votre cluster de bases de données Aurora PostgreSQL, vous devez être conscient de l'exposition possible à des mots de passe dans les journaux et de la manière d'atténuer les risques. Pour de plus amples informations, veuillez consulter Atténuation du risque d'exposition des mots de passe lors de l'utilisation de la journalisation de requêtes.

Vous trouverez ci-dessous des informations de référence sur les paramètres log_statement et log_min_duration.

log_statement

Ce paramètre indique le type d'instructions SQL qui doivent être envoyées au journal. La valeur par défaut est none. Si vous remplacez ce paramètre par all, ddl ou mod, veillez à prendre les mesures recommandées pour réduire le risque d'exposition des mots de passe dans les journaux. Pour de plus amples informations, veuillez consulter Atténuation du risque d'exposition des mots de passe lors de l'utilisation de la journalisation de requêtes.

Tout

Journalise toutes les instructions. Ce paramètre est recommandé à des fins de débogage.

ddl

Journalise toutes les instructions DDL (Data Definition Language), telles que CREATE, ALTER, DROP, etc.

mod

Journalise toutes les instructions DDL et les instructions de langage de manipulation des données (DML) telles que INSERT, UPDATE et DELETE, qui modifient les données.

none

Aucune instruction SQL n'est journalisée. Nous recommandons ce paramètre pour éviter le risque d'exposer des mots de passe dans les journaux.

log_min_duration_statement

Toute instruction SQL exécutée au moins pendant la durée spécifiée ou plus est journalisée. Ce paramètre n'est pas défini par défaut. L'activation de ce paramètre peut vous aider à identifier les requêtes non optimisées.

–1–2147483647

Le nombre de millisecondes (ms) d'exécution pendant lequel une instruction est journalisée.

Configurer la journalisation des requêtes

Ces étapes supposent que votre cluster de bases de données Aurora PostgreSQL utilise un groupe de paramètres de cluster de bases de données personnalisé.

  1. Définissez le paramètre log_statement sur all. L'exemple suivant illustre les informations écrites dans le fichier postgresql.log avec cette définition de paramètre.

    2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats: ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed ! [0.025146 s user, 0.000000 s system total] ! 36644 kB max resident size ! 0/8 [0/8] filesystem blocks in/out ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent ! 19/0 [27/0] voluntary/involuntary context switches 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC; ----------------------- END OF LOG ----------------------
  2. Définissez le paramètre log_min_duration_statement. L'exemple suivant illustre les informations écrites dans le fichier postgresql.log lorsque le paramètre est défini sur 1.

    Les requêtes qui dépassent la durée spécifiée dans le paramètre log_min_duration_statement sont enregistrées. Vous en trouverez un exemple ci-dessous. Vous pouvez consulter le fichier journal de votre cluster de bases de données Aurora PostgreSQL dans la console Amazon RDS.

    2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments; 2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms 2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time 2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB ----------------------- END OF LOG ----------------------

Atténuation du risque d'exposition des mots de passe lors de l'utilisation de la journalisation de requêtes

Nous vous recommandons de garder log_statement sur none pour éviter de dévoiler les mots de passe. Si vous avez réglé log_statement sur all, ddl ou mod, nous vous recommandons de suivre une ou plusieurs des étapes suivantes.

  • Pour le client, chiffrez les informations sensibles. Pour plus d'informations, consultez Options de chiffrement dans la documentation PostgreSQL. Utilisez les options ENCRYPTED (et UNENCRYPTED) des instructions CREATE et ALTER. Pour plus d'informations, consultez CREATE USER dans la documentation PostgreSQL.

  • Pour votre cluster de bases de données Aurora PostgreSQL, configurez et utilisez l'extension PostgreSQL Auditing (pgAudit). Cette extension supprime les informations sensibles dans les instructions CREATE et ALTER envoyées au journal. Pour de plus amples informations, veuillez consulter Utilisation pgAudit pour enregistrer l'activité de la base de données.

  • Limitez l'accès aux CloudWatch journaux.

  • Utilisez des mécanismes d'authentification plus forts tels que IAM.