Amazon Relational Database Service
Guide de l'utilisateur

Fichiers journaux de base de données PostgreSQL

RDS PostgreSQL génère des journaux de requêtes et des erreurs. Nous écrivons les informations relatives au processus auto-vacuum et les actions rds_admin dans le journal d'erreurs. PostgreSQL consigne également les connexions, les déconnexions et les points de contrôle dans le journal des erreurs. Pour plus d'informations, consultez la section Error Reporting and Logging dans la documentation PostgreSQL.

Vous pouvez définir la période de rétention des fichiers systèmes à l'aide du paramètre rds.log_retention_period dans le groupe de paramètres DB associé à votre instance de base de données. L'unité par défaut pour ce paramètre est la minute. Par exemple, une valeur de 1 440 conservera les journaux pendant un jour. La valeur par défaut est 4 320 (trois jours). La valeur maximum est 10 080 (sept jours). Notez que le stockage alloué de votre instance doit être suffisant pour contenir les fichiers journaux conservés.

Vous pouvez activer la journalisation des requêtes pour votre instance de base de données PostgreSQL en définissant deux paramètres dans le groupe de paramètres DB associé à votre instance de base de données : log_statement et log_min_duration_statement. Le paramètre log_statement contrôle les instructions SQL qui sont enregistrées. Nous vous recommandons de définir ce paramètre sur all (tous) afin de consigner toutes les instructions lors du débogage des problèmes dans votre instance de base de données. La valeur par défaut est none (aucune). Vous pouvez aussi définir cette valeur sur ddl afin de consigner toutes les instructions en langage de définition de données (DDL) (CREATE, ALTER, DROP, etc.) ou sur mod pour consigner toutes les instructions DDL ou en langage de modification de données (DML) (INSERT, UPDATE, DELETE, etc.).

Le paramètre log_min_duration_statement définit la limite en millisecondes pour l'enregistrement d'une instruction. Toutes les instructions SQL s'exécutant plus longtemps que la durée définie pour le paramètre sont enregistrées. Par défaut, ce paramètre est désactivé et défini sur moins 1 (-1). L'activation de ce paramètre vous permet d'identifier les requêtes non optimisées.

Si vous n'êtes pas encore familiarisé avec la définition de paramètres dans un groupe de paramètres DB et l'association de ce groupe de paramètres avec une instance de base de données, consultez Utilisation de groupes de paramètres de base de données

Les étapes suivantes vous montrent comment définir la journalisation des requêtes :

  1. Définissez le paramètre log_statement sur tous. L'exemple suivant illustre les informations écrites dans le fichier postgres.log :

    2013-11-05 16:48:56 UTC::@:[2952]:LOG: received SIGHUP, reloading configuration files 2013-11-05 16:48:56 UTC::@:[2952]:LOG: parameter "log_statement" changed to "all"

    Des informations supplémentaires sont écrites dans le fichier postgres.log lorsque vous exécutez une requête. L'exemple suivant illustre le type d'informations écrites dans le fichier après une requête :

    2013-11-05 16:41:07 UTC::@:[2955]:LOG: checkpoint starting: time 2013-11-05 16:41:07 UTC::@:[2955]:LOG: checkpoint complete: wrote 1 buffers (0.3%); 0 transaction log file(s) added, 0 removed, 1 recycled; write=0.000 s, sync=0.003 s, total=0.012 s; sync files=1, longest=0.003 s, average=0.003 s 2013-11-05 16:45:14 UTC:[local]:master@postgres:[8839]:LOG: statement: SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.datdba) as "Owner", pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", d.datcollate as "Collate", d.datctype as "Ctype", pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" FROM pg_catalog.pg_database d ORDER BY 1; 2013-11-05 16:45:
  2. Définissez le paramètre log_min_duration_statement. L'exemple suivant illustre les informations écrites dans le fichier postgres.log lorsque le paramètre est défini sur 1 :

    2013-11-05 16:48:56 UTC::@:[2952]:LOG: received SIGHUP, reloading configuration files 2013-11-05 16:48:56 UTC::@:[2952]:LOG: parameter "log_min_duration_statement" changed to "1"

    Des informations supplémentaires sont écrites dans le fichier postgres.log lorsque vous exécutez une requête dont la durée dépasse celle définie dans le paramètre de durée. L'exemple suivant illustre le type d'informations écrites dans le fichier après une requête :

    2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c2.relname, i.indisprimary, i.indisunique, i.indisclustered, i.indisvalid, pg_catalog.pg_get_indexdef(i.indexrelid, 0, true), pg_catalog.pg_get_constraintdef(con.oid, true), contype, condeferrable, condeferred, c2.reltablespace FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i LEFT JOIN pg_catalog.pg_constraint con ON (conrelid = i.indrelid AND conindid = i.indexrelid AND contype IN ('p','u','x')) WHERE c.oid = '1255' AND c.oid = i.indrelid AND i.indexrelid = c2.oid ORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname; 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: duration: 3.367 ms 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhparent AND i.inhrelid = '1255' ORDER BY inhseqno; 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: duration: 1.002 ms 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhrelid AND i.inhparent = '1255' ORDER BY c.oid::pg_catalog.regclass::pg_catalog.text; 2013-11-05 16:51:18 UTC:[local]:master@postgres:[9193]:LOG: statement: select proname from pg_proc; 2013-11-05 16:51:18 UTC:[local]:master@postgres:[9193]:LOG: duration: 3.469 ms

Publication de journaux PostgreSQL dans CloudWatch Logs

Vous pouvez configurer votre instance de base de données Amazon RDS pour PostgreSQL de façon à publier les données de journaux dans un groupe de journaux dans Amazon CloudWatch Logs. CloudWatch Logs vous permet d'effectuer une analyse en temps réel des données de journaux et d'utiliser CloudWatch pour créer des alarmes et afficher des métriques. CloudWatch Logs permet de conserver les enregistrements des journaux dans une solution de stockage hautement durable.

Note

La publication de fichiers journaux dans CloudWatch Logs est uniquement prise en charge pour les versions 9.6.6 et ultérieures et 10.4 et ultérieures de PostgreSQL.

Les types de journaux qui peuvent être publiés dans CloudWatch Logs pour Amazon RDS pour PostgreSQL sont les suivants.

  • Journal PostgreSQL

  • Journal de mise à niveau

Après avoir terminé la configuration, Amazon RDS publie les événements de journaux dans des flux de journaux au sein d'un groupe de journaux CloudWatch. Par exemple, les données de journaux PostgreSQL sont stockés dans le groupe de journaux /aws/rds/instance/my_instance/postgresql. Pour afficher votre Amazon CloudWatch Logs, ouvrez https://console.aws.amazon.com/cloudwatch/.

Console

Pour publier des journaux PostgreSQL dans CloudWatch Logs à l'aide de la console

  1. Ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans la panneau de navigation, choisissez Databases (Bases de données).

  3. Sélectionnez l'instance de base de données que vous souhaitez modifier, puis choisissez Modifier.

  4. Dans la section Exportations des journaux, choisissez les journaux que vous voulez commencer à publier dans CloudWatch Logs.

    La section Exportations des journaux est uniquement disponible pour les versions de PostgreSQL qui prennent en charge la publication sur CloudWatch Logs.

  5. Choisissez Continuer, puis Modifier l'instance de base de données sur la page récapitulative.

AWS CLI

Vous pouvez publier des journaux PostgreSQL avec l'interface de ligne de commande AWS. Vous pouvez appeler la commande modify-db-instance avec les paramètres suivants :

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

Note

Une modification apportée à l'option --cloudwatch-logs-export-configuration est toujours appliquée immédiatement à l'instance de base de données. Par conséquent, les options --apply-immediately et --no-apply-immediately sont sans effet.

Vous pouvez également publier des journaux PostgreSQL en appelant les commandes suivantes de l'interface de ligne de commande AWS :

Exécutez l'une de ces commandes de l'interface de ligne de commande AWS avec les options suivantes :

  • --db-instance-identifier

  • --enable-cloudwatch-logs-exports

  • --db-instance-class

  • --engine

D'autres options peuvent être requises en fonction de la commande d'interface de ligne de commande AWS que vous exécutez.

Modification d'une instance pour publier des journaux sur CloudWatch Logs

L'exemple suivant modifie une instance de base de données PostgreSQL existante pour publier les fichiers journaux sur CloudWatch Logs. La valeur --cloudwatch-logs-export-configuration n'est pas un objet JSON. La clé pour cet objet est EnableLogTypes et sa valeur est un tableau de chaînes avec une combinaison quelconque de postgresql et upgrade.

Pour Linux, OS X ou Unix :

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql", "upgrade"]}'

Pour Windows :

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql","upgrade"]}'

Création d'une instance pour publier des journaux sur CloudWatch Logs

L'exemple suivant crée une instance de base de données PostgreSQL et publie les fichiers journaux sur CloudWatch Logs. La valeur --enable-cloudwatch-logs-exports est un tableau de chaînes JSON. Les chaînes peuvent être une combinaison quelconque de postgresql et upgrade.

Pour Linux, OS X ou Unix :

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' \ --db-instance-class db.m4.large \ --engine postgres

Pour Windows :

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' ^ --db-instance-class db.m4.large ^ --engine postgres
API RDS

Vous pouvez publier des journaux PostgreSQL avec l'API RDS. Vous pouvez appeler l'action ModifyDBInstance avec les paramètres suivants :

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

Note

Une modification apportée au paramètre CloudwatchLogsExportConfiguration est toujours appliquée immédiatement à l'instance de base de données. Par conséquent, le paramètre ApplyImmediately est sans effet.

Vous pouvez également publier des journaux PostgreSQL en appelant les opérations d'API RDS suivantes :

Exécutez l'une de ces opérations d'API RDS avec les paramètres suivants :

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

D'autres paramètres peuvent être requis en fonction de l'action que vous exécutez.