Configuration de journalisation de PostgreSQL
pgBadger ne peut rapporter que les informations écrites par PostgreSQL dans les journaux. Commencez par un préfixe analysable et une politique de journalisation explicite des requêtes, puis ajoutez les événements opérationnels que vous souhaitez analyser.
Journalisation minimale des requêtes
Pour inclure le texte et la durée de la requête, activez la journalisation des instructions basée sur la durée :
0 enregistre chaque instruction terminée. Sur un serveur très sollicité, sélectionnez une valeur plus élevée en millisecondes afin de contrôler le volume des journaux. Mesurez la surcharge et la croissance du stockage avant d’activer une seuil faible en production.
Si vous avez besoin uniquement de la durée et du nombre de requêtes, et non du texte des requêtes, utilisez :
Privilégiez log_min_duration_statement lorsque vous avez besoin des rapports sur les requêtes les plus lentes et le temps total passé aux requêtes.
Champs de préfixe requis
Un log_line_prefix personnalisé doit inclure les deux éléments suivants :
- un champ de type heure :
%t,%mou%n; - un champ de type processus ou session :
%pou%c.
Un préfixe stderr minimal est :
Un préfixe plus utile enregistre l’utilisateur, la base de données, l’application et le client :
Le préfixe équivalent pour une destination syslog omet l’horodatage et les champs processus déjà fournis par syslog :
Un autre ordre de clés pris en charge est :
Lorsque votre préfixe n’est pas l’une des formes reconnues par pgBadger, passez la valeur exacte avec --prefix. Ne la simplifiez ni ne la retapez différemment par rapport à postgresql.conf.
Paramètres d’événement recommandés
Activez les classes d’événements que vous souhaitez voir apparaître dans le rapport :
Ces paramètres peuvent générer un trafic de journalisation important. En particulier, log_temp_files = 0 et log_autovacuum_min_duration = 0 journalisent chaque événement correspondant ; ajustez-les en fonction de la charge de travail et du budget de rétention.
Garder les messages serveur en anglais
Le parseur reconnaît les messages du serveur PostgreSQL en anglais. Utilisez l’une des options suivantes :
ou :
Les locales telles que fr_FR.UTF-8 ne sont pas prises en charge par le parseur principal.
Éviter les conflits entre les paramètres d’instruction
N’activez pas simultanément log_min_duration_statement, log_duration et log_statement = 'all'. La même exécution peut être journalisée plus d’une fois, ce qui fausse les compteurs de pgBadger et augmente considérablement le volume des journaux.
| Objectif | Paramétrage recommandé |
|---|---|
| Texte de requête et chronométrage | log_min_duration_statement = 0 ou une seuil choisi |
| Durée et comptage uniquement | log_min_duration_statement = -1, log_duration = on |
| Audit des énoncés généraux | Traiter log_statement comme une politique de journalisation distincte ; ne pas combiner les trois paramètres pour les statistiques de pgBadger |
Après avoir rechargé PostgreSQL, examinez plusieurs entrées de journal réelles avant d’exécuter une analyse importante. Vérifiez que les champs horodatage, identifiant de processus/session, utilisateur, base de données, application et client correspondent au format sélectionné.