Je souhaite activer la journalisation des requêtes dans Amazon Relational Database Service (Amazon RDS) pour les instances de base de données PostgreSQL.
Brève description
En fonction des requêtes que vous souhaitez journaliser, activez log_statement ou log_min_duration_statement. Pour plus d'informations, consultez les pages log_min_duration_statement et log_statement sur le site Web de PostgreSQL. Il n'est pas nécessaire de modifier les deux paramètres pour activer la journalisation dans Amazon RDS pour PostgreSQL.
Pour afficher les journaux des requêtes dont l'exécution prend un certain temps, modifiez le paramètre log_min_duration_statement en quelques millisecondes. Par exemple, si vous définissez la valeur du paramètre sur 500, Amazon RDS consigne toutes les requêtes dont l'exécution prend plus d'une demi-seconde. Si vous définissez la valeur du paramètre sur -1, vous désactivez le paramètre. Amazon RDS ne consigne pas de requêtes basées sur le temps nécessaire à son exécution. Si vous définissez la valeur du paramètre à 0, Amazon RDS consignera toutes les requêtes.
Pour contrôler les instructions SQL que vous souhaitez enregistrer, vous pouvez modifier les valeurs suivantes pour le paramètre log_statement :
- 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, quel que soit l’exécution.
Remarque : la valeur par défaut du paramètre log_statement est aucun.
Quelle que soit la valeur que vous définissez pour log_min_duration_statement ou log_statement, Amazon RDS écrit les requêtes une seule fois dans le journal. Cependant, lorsque vous modifiez les paramètres, il est possible que le volume de d’instance de base de données nécessite davantage d’espace. Pour minimiser l'utilisation du stockage, ne définissez pas les paramètres sur des valeurs qui génèrent une journalisation étendue, telles que log_statement sur tout ou log_min_duration_statement sur 0.
Étant donné que l'instance de base de données n'est pas disponible lorsque le volume de stockage est plein, il est recommandé de modifier le paramètre rds.log_retention_period pour supprimer les journaux inutiles. Il est également recommandé d’utiliser la métrique Amazon CloudWatch FreeStorageSpace pour surveiller en continu l’utilisation de votre stockage. Si l’espace de stockage est presque plein, vous pouvez l’augmenter afin que l’instance de base de données reste disponible.
Résolution
Modifier le groupe de paramètres personnalisés pour activer la journalisation
Procédez comme suit :
- Ouvrez la console Amazon Aurora et RDS.
- Créez un groupe de paramètres personnalisés, puis associez-le à votre instance de base de données.
Remarque : si vous sélectionnez Appliquer immédiatement, l'instance de base de données devient temporairement indisponible.
- Dans le volet de navigation, choisissez Groupes de paramètres.
- Choisissez votre groupe de paramètres personnalisés.
- Sélectionnez Modifier le paramètre.
- Dans le champ Paramètres de filtre, saisissez log_statement ou log_min_duration_statement.
- Sélectionnez le paramètre, puis modifiez-le. Par exemple, vous pouvez changer log_statement en ddl ou log_min_duration_statement en 1000 (1 seconde).
- Sélectionnez Enregistrer les modifications.
Remarque : les paramètres étant dynamiques, il n'est pas nécessaire de redémarrer l'instance de base de données afin que les modifications de paramètres soient prises en compte.
L'état du groupe de paramètres passe à Application. Une fois les modifications du groupe de paramètres terminées, le statut passe à En cours de synchronisation.
Vérifier que vous avez activé la journalisation
Procédez comme suit :
- Connectez-vous à l'instance de base de données.
- Exécutez les commandes suivantes :
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;
Remarque : remplacez les exemples de valeurs par vos valeurs.
Le résultat des exemples de commandes précédents affiche toutes les instructions et requêtes DDL qui prennent plus d'une seconde.
Consulter les journaux de requêtes
Procédez comme suit :
- Ouvrez la console Aurora et RDS.
- Dans le volet de navigation, choisissez Bases de données.
- Sélectionnez votre instance de base de données.
- Choisissez l'onglet Journaux et événements.
- Dans la section Journaux, sélectionnez le journal le plus récent, puis choisissez Afficher.
Exemple de journal :
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;
Informations connexes
Fichiers journaux de base de données RDS pour PostgreSQL