Activation de la journalisation des requêtes pour votre pour une instance de base de données Postgre SQL - Amazon Relational Database Service

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.

Activation de la journalisation des requêtes pour votre pour une instance de base de données Postgre SQL

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.

log_disconnections

Journalise la fin de chaque session et sa durée.

log_checkpoints

1

Enregistre les points de vérification.

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 SQL instruction exécutée au moins pendant la durée spécifiée ou plus est enregistré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 remplacer par allddl, ou mod pour spécifier les types d'SQLinstructions que vous souhaitez enregistrer. 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 enregistrer SQL des instructions et des requêtes pour identifier les 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 pour l'SQLinstance de base de données Postgre, vous devez être conscient de la possible exposition 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'SQLinstructions 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

Enregistre toutes les instructions du langage de définition des données (DDL) CREATEALTER, telles queDROP,,, etc.

mod

Enregistre toutes les DDL instructions et instructions du langage de manipulation des données (DML)INSERT, telles queUPDATE, etDELETE, qui modifient les données.

none

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

log_min_duration_statement

Toute SQL instruction exécutée au moins pendant la durée spécifiée ou plus est enregistré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 . RDSpour l'SQLinstance de base de données Postgre utilise un groupe de paramètres de base 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 pour SQL instance de base de données Postgre dans la console AmazonRDS.

    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 la section Options de chiffrement dans la SQL documentation Postgre. Utilisez les options ENCRYPTED (et UNENCRYPTED) des instructions CREATE et ALTER. Pour plus d'informations, consultez CREATEUSERla SQL documentation Postgre.

  • Pour votre instance de RDS pour Postgre SQL, configurez et utilisez l'extension Postgre SQL Auditing ()pgAudit. Cette extension expédie les informations sensibles CREATE et les ALTER instructions 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 puissants tels queIAM.