Comment activer la journalisation des requêtes à l'aide d'Amazon RDS for PostgreSQL ?

Date de la dernière mise à jour : 24/06/2020

Comment puis-je activer la journalisation des requêtes pour mes instances de base de données Amazon Relational Database Service (Amazon RDS) for PostgreSQL ? 

Brève description

Pour activer la journalisation des requêtes sur PostgreSQL, modifiez les valeurs des paramètres suivants en modifiant un groupe de paramètres personnalisé associé à l'instance de base de données :

Lors de la modification des paramètres de journal, vous pouvez nécessiter de davantage d'espace sur le volume de l'instance de base de données. Si le stockage du volume est plein, l'instance de base de données devient indisponible. Il est recommandé de modifier également le paramètre rds.log_retention_period pour nettoyer les anciens journaux. Il est également recommandé de surveiller en permanence votre consommation de stockage à l'aide de la métrique Amazon CloudWatch FreeStorageSpace et de l'augmenter si nécessaire.

Solution

Selon les requêtes que vous souhaitez enregistrer, vous pouvez activerlog_statement ou log_min_duration_statement. Vous n'avez pas besoin de modifier les deux paramètres pour activer la journalisation.

Modifiez log_min_duration_statement pour définir un seuil en millisecondes afin de vous permettre d’enregistrer toutes les requêtes qui prennent plus de temps que la valeur définie du paramètre. Par exemple, si vous définissez la valeur de log_min_duration_statement à 500, Amazon RDS consigne toutes les requêtes (quel que soit le type de requête) dont le délai d'exécution est supérieur à une demi-seconde. De même, si vous définissez la valeur de ce paramètre à 2000, Amazon RDS enregistre toutes les requêtes dont le délai d'exécution est supérieur à deux secondes. Si vous définissez la valeur du paramètre sur -1, cela désactive le paramètre et Amazon RDS ne consigne aucune requête en fonction de la durée du délai d'exécution. Si vous définissez la valeur du paramètre sur 0, Amazon RDS consigne toutes les requêtes.
Remarque : le paramètre log_min_duration_statement ne dépend pas ou n’interfère pas avec le paramètre log_statement.

Modifiez le paramètre log_statement pour contrôler quelles instructions SQL sont enregistrées. La valeur par défaut est none, mais vous pouvez modifier les valeurs de ce paramètre comme suit :

  • ddl consigne toutes les instructions DDL (Data Definition Language) telles que CREATE, ALTER et DROP.
  • mod consigne toutes les instructions DDL et DML (Data Manipulation Language) telles que INSERT, UPDATE et DELETE.
  • all consigne toutes les requêtes (quelle que soit la durée d'exécution).

Remarque : quelle que soit la valeur que vous définissez pour log_statement et log_min_duration_statement, les requêtes ne sont pas consignées deux fois dans le journal.

Activer la journalisation des requêtes sur PostreSQL

Pour activer la journalisation des requêtes sur PostgreSQL, procédez comme suit :

Remarque : l'exemple suivant illustre les modifications de paramètres de journal suivantes : toutes les requêtes qui prennent plus d'une seconde (quel que soit le type de requête) et toutes les modifications de schéma (instructions DDL quelle que soit la durée d’exécution).

  1. Ouvrez la console Amazon RDS et sélectionnez Bases de données dans le volet de navigation.
  2. Sélectionnez l'instance de base de données pour laquelle vous souhaitez consigner les requêtes.
  3. Sélectionnez la vue Configuration pour voir les détails de l'instance de base de données et le groupe de paramètres qui y est associé.
    Remarque : lorsque vous créez une instance de base de données, celle-ci est associée au groupe de paramètres de base de données par défaut. Étant donné que ce groupe ne peut pas être modifié, créez un groupe de paramètres personnalisé pour modifier le groupe de paramètres. Lorsque vous modifiez le groupe de paramètres de l'instance (en passant du groupe par défaut à un groupe personnalisé), vous devez redémarrer l'instance de base de données.
  4. Sélectionnez Groupe de paramètres dans le volet Configuration de l'instance, puis sélectionnez le groupe de paramètres que vous souhaitez modifier.
  5. Sélectionnez Modifier le paramètre.
  6. Dans le champ Filtrer les paramètres, sélectionnez le paramètre que vous souhaitez modifier. Par exemple :
    Saisissez log_statement et modifiez la valeur sur ddl.
    Saisissez log_min_duration_statement et modifiez la valeur sur 1000. (Cette valeur est exprimée en millisecondes, donc 1 000 équivaut à une seconde.)
  7. Sélectionnez Enregistrer les modifications.
    Remarque : ces paramètres sont dynamiques. Si votre instance de base de données possède déjà un groupe de paramètres personnalisé, vous n'avez pas besoin de redémarrer l'instance de base de données pour que ces paramètres prennent effet.

Confirmer que la journalisation est activée

Une fois que vous avez enregistré le groupe de paramètres associé à votre instance de base de données, le statut est en cours d’application. Une fois que le groupe de paramètres est défini dans votre instance de base de données, le statut est en cours de synchronisation. Pour confirmer que la journalisation est activée (dans cet exemple, toutes les instructions DDL et toutes les requêtes qui prennent plus d'une seconde), connectez-vous à l'instance de base de données. Ensuite, exécutez des commandes similaires à la suivante :

CREATE TABLE article(article_code bigint, created_at timestamp with time zone, summary text, content text) ;
SELECT pg_sleep(2);
SELECT generate_series(1,10000000) as test;

Afficher les journaux de requêtes

Pour afficher les journaux, procédez comme suit :

  1. Ouvrez la console Amazon RDS, puis sélectionnez Bases de données dans le volet de navigation.
  2. Sélectionnez votre instance de base de données, puis la vue Journaux .
  3. Dans l'onglet Journaux et événements, sélectionnez le journal le plus récent, puis Afficher les journaux pour afficher le contenu des journaux. Par exemple :
2018-12-19 11:05:32 UTC:172.31.xx.yyy(35708):user@awspostgres:[27174]:LOG: statement: CREATE TABLE article(article_code bigint, created_at timestamp with time zone, summary text, content text) ;

2018-12-19 11:10:36 UTC:172.31.xx.yyy(35708):user@awspostgres:[27174]:LOG: duration: 2010.247 ms statement: select pg_sleep(2);

2018-12-19 11:11:25 UTC:172.31.xx.yyy(35708):user@awspostgres:[27174]:LOG: duration: 2159.838 ms statement: SELECT generate_series(1,10000000) as test;

Remarque: assurez-vous de ne pas définir les paramètres ci-dessus à des valeurs qui génèrent une journalisation étendue. Par exemple, la définition de log_statement sur all ou la définition de log_min_duration_statement sur 0 ou un très petit nombre peut générer une énorme quantité d'informations de journalisation. Cela a un impact sur votre consommation de stockage. Si vous avez besoin de définir les paramètres sur ces valeurs, assurez-vous que vous ne le faites que pendant une courte période à des fins de dépannage, et surveillez de près l'espace de stockage tout au long.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?