PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Analyse des journaux PostgreSQL avec pgBadger

Parfois, les journaux sont les derniers éléments vérifiés lorsque les choses tournent mal, mais ils sont généralement les premiers à demander de l'aide lorsque quelque chose se produit. Rechercher manuellement les problèmes dans les journaux aide, mais pourquoi ne pas utiliser des analyseurs de journaux pour générer automatiquement des rapports afin de fournir des informations sur la base de données avant que quelque chose ne se passe ?

L'analyseur de journaux PostgreSQL "pgBadger" est un programme open source de "rapport d'analyse rapide de journaux PostgreSQL" écrit en Perl qui prend la sortie du journal d'une instance PostgreSQL en cours d'exécution et la traite dans un fichier HTML. Le rapport qu'il génère affiche toutes les informations trouvées dans un format de rapport agréable et facile à lire. Ces rapports peuvent aider à faire la lumière sur les erreurs qui se produisent dans le système, le comportement des points de contrôle, le comportement du vide, les tendances et d'autres informations de base mais cruciales pour un système PostgreSQL.

Configuration de la journalisation PostgreSQL

Pour utiliser pgBadger efficacement, la journalisation dans PostgreSQL doit être configurée pour fournir à pgBadger autant d'informations que possible. Une poignée d'options peuvent être modifiées pour permettre au système de base de données d'enregistrer des informations utiles pour pgBadger afin de générer des rapports utiles. Une documentation complète pour la configuration de PostgreSQL peut être trouvée sur la page github de pgBadger, mais quelques informations de base sont ci-dessous.

Lorsqu'il est exécuté, pgBadger traitera les journaux de PostgreSQL, qu'ils soient syslog, stderr ou csvlog, tant que les lignes de journal elles-mêmes contiennent suffisamment d'informations dans le préfixe.

Exemples de valeurs log_line_prefix :

Si log_destination ='syslog'

log_line_prefix = 'user=%u,db=%d,app=%aclient=%h '

Si log_destination ='stderr'

log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

Paramètres de configuration de base à définir dans postgresql.conf :

log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
log_statement = off
lc_messages='C'

Log_min_duration_statement = (see below)

L'une des parties les plus utiles des rapports de pgBadger est le rapport de requête lente, qui repose sur les requêtes de journalisation de la base de données qui dépassent la valeur log_min_duration_statement. Cette valeur est représentée en millisecondes, et toute requête qui se termine avec un temps supérieur à celui-ci sera enregistrée, puis les rapports générés par pgBadger. Ceci est utile pour rechercher et analyser les requêtes qui prennent plus de temps que souhaité.

Bien que la définition de cette valeur sur 0 pour enregistrer toutes les requêtes fournirait le plus d'informations, cela peut facilement finir par générer des fichiers journaux beaucoup trop volumineux et avoir un impact sur les performances de la base de données elle-même en raison de l'écriture constante dans le journal. Une valeur plus sensée ne fournira pas un nombre de requêtes parfait, mais concentrera toujours les rapports sur les requêtes lentes en général. Si les requêtes qui s'exécutent pendant quelques minutes sont considérées comme « lentes », définir la valeur sur une minute ferait bien l'affaire. Si les requêtes exécutées pendant plus de quelques secondes sont considérées comme « lentes », la définition de la valeur sur quelque chose comme 5 secondes fonctionnerait également bien.

Génération de journaux

La génération des journaux se fait via la ligne de commande à l'aide de l'exécutable pgBadger. Il existe une multitude d'options, mais la configuration la plus élémentaire consiste à fournir le préfixe de ligne de journal utilisé par la base de données, le fichier journal et le fichier html de sortie.

./pgbadger --prefix '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ' postgresql.log -o postgresql.html
[========================>] Parsed 560607407 bytes of 560607407 (100.00%), queries: 2929645, events: 5

Pour plus d'informations sur les différentes options de pgBadger, consultez la documentation ou exécutez le binaire avec le paramètre d'entrée --help.

Génération avancée de journaux

Étant donné que la génération de rapports sur les journaux est une simple exécution en ligne de commande, des scripts et des programmes personnalisés peuvent être configurés pour générer automatiquement des rapports, mis en scène sur des serveurs Web, envoyés par courrier électronique ou archivés dans un stockage à long terme. Explorez les différentes options disponibles pour la génération de rapports et faites preuve de créativité avec des systèmes automatisés pour la génération et la livraison de rapports.

Examiner les journaux

L'examen des journaux est le moment le plus amusant. Le rapport qui a été généré peut maintenant être ouvert dans un navigateur Web et examiné.

Statistiques globales

La section des statistiques globales contient des informations de base trouvées dans le journal PostgreSQL, notamment :

  • Requêtes :nombre de requêtes trouvées, durée, nombre de requêtes normalisées, etc.
  • Événements :nombre total d'événements, événements normalisés, etc.
  • Aspirateurs :nombre total d'aspirateurs automatiques et d'analyses automatiques trouvés.
  • Fichiers temporaires :nombre total de fichiers temporaires trouvés, taille maximale et taille moyenne.
  • Session :nombre total de sessions, heures de pointe des sessions, durée totale des sessions, durée moyenne des sessions, requêtes moyennes trouvées par session, durée moyenne des requêtes par session.
  • Connexions :nombre total de connexions, nombre maximal de connexions et nombre total de bases de données connectées.

Remarque : Les résultats impliquant des requêtes, le nombre de requêtes ou la durée de la requête seront inexacts avec des valeurs de log_min_duration_statement supérieures à 0.

Exemple :

Exemple de statistiques globales pgBadger

Connexions

La page des connexions affiche des graphiques détaillant les informations de connexion trouvées dans les journaux. Tant que log_connections et log_disconnections sont activés, les valeurs ici seront exactes. Les graphiques disponibles sont :

  • Connexions établies :affiche le nombre maximal, minimal et moyen de connexions au fil du temps.
  • Connexions par base de données :graphique à secteurs et tableau indiquant le nombre de connexions pour chaque base de données trouvée.
  • Connexions par utilisateur :graphique à secteurs et tableau indiquant le nombre de connexions pour chaque utilisateur trouvé.
  • Connexions par hôte :un graphique à secteurs et une vue sous forme de tableau indiquant le nombre de connexions pour chaque hôte source trouvé.

Exemple :

Exemple de graphique à secteurs pgBadger Connections

Séances

La page des sessions est similaire à la page des connexions, mais contient quelques informations supplémentaires relatives aux sessions elles-mêmes.

  • Sessions simultanées :un graphique linéaire indiquant le nombre de sessions au fil du temps.
  • Histogramme des durées de session :un graphique à barres et un tableau indiquant les durées de session.
  • Sessions par base de données :graphique à secteurs et tableau indiquant le nombre de sessions pour chaque base de données trouvée.
  • Sessions par utilisateur :graphique à secteurs et vue sous forme de tableau indiquant le nombre de sessions pour chaque utilisateur trouvé.
  • Sessions par hôte :graphique à secteurs et tableau indiquant le nombre de sessions pour chaque hôte source trouvé.
  • Sessions par application :nombre de sessions connectées par application.
Sessions pgBadger par diagramme circulaire de base de données

Points de contrôle

La page des points de contrôle fournit des informations sur le processus du point de contrôle, y compris le nombre de tampons écrits, les fichiers WAL et d'autres informations générales.

  • Tampons de point de contrôle :un graphique linéaire indiquant la quantité de tampons écrits par le processus de point de contrôle au fil du temps.
  • Fichiers WAL des points de contrôle :un graphique linéaire indiquant le nombre de fichiers WAL ajoutés, supprimés ou recyclés par le pointeur de contrôle au fil du temps.
  • Distance du point de contrôle :un graphique linéaire indiquant la distance et l'estimation des points de contrôle.
  • Activité des points de contrôle :un tableau montrant les quatre points de données précédents sous forme de tableau.
pgBadger Checkpoints Buffers chartTélécharger le livre blanc aujourd'hui PostgreSQL Management &Automation with ClusterControlDécouvrez ce que vous devez savoir pour déployer, surveiller , gérer et faire évoluer PostgreSQLTélécharger le livre blanc

Fichiers temporaires

La page des fichiers temporaires contient des informations sur les fichiers temporaires, qui sont créés lorsqu'une requête manque de work_mem et doit utiliser le disque pour trier ou filtrer les résultats avant de les renvoyer aux applications. Ces fichiers sont supprimés automatiquement lorsque la requête est terminée, et connaître l'activité du fichier temporaire aide l'administrateur à régler le paramètre work_mem.

  • Taille des fichiers temporaires :graphique linéaire indiquant l'espace utilisé par les fichiers temporaires au fil du temps.
  • Nombre de fichiers temporaires :graphique linéaire indiquant le nombre de fichiers temporaires utilisés au fil du temps.
  • Activité des fichiers temporaires :un tableau montrant les informations fournies dans les graphiques précédents, mais sous forme de tableau.
pgBadger Tableau de la taille des fichiers temporaires

Aspirateurs

Cette page affiche des informations sur les VACUUM et les ANALYZE se produisant dans la base de données. Ces informations sont utiles pour savoir si le processus d'autovacuum fait assez bien son travail ou s'il est enlisé et a besoin de plus de ressources.

  • Répartition des vides/analyses :un graphique linéaire montrant les vides et les analyses au fil du temps, ainsi que des informations sur le tableau qui a consommé le plus de puissance de traitement du processeur.
  • Analyses par tableau :un graphique à secteurs et un tableau montrant les tableaux avec le plus d'analyses, suggérant que ces tableaux sont dans un état de changement élevé.
  • Vacuums par table :un graphique à secteurs et un tableau montrant les tables avec le plus de vides, ce qui suggère que ces tables sont dans un état de changement élevé.
  • Tuples supprimés par table :un graphique à secteurs et un tableau indiquant le nombre de tuples et de pages supprimés dans les processus de vide pour les tables.
  • Pages supprimées par table :un graphique à secteurs et un tableau indiquant le nombre de pages et de tuples supprimés dans les processus de vide pour les tables.
  • Activité d'autovacuum :un tableau indiquant les VACUUM et ANALYZE au fil du temps par heure.
pgBadger Aspirateurs / Analyses Graphique de distribution

Verrous

La page des verrous ne contient que quelques éléments de données, mais il s'agit d'informations utiles pour savoir quand des processus peuvent bloquer d'autres requêtes pendant de longues périodes.

  • Serrures par types
  • Requêtes en attente les plus fréquentes :liste des requêtes en attente, classées de la plus fréquente à la moins fréquente.
  • Requêtes qui ont attendu le plus :une liste des requêtes et leur durée d'attente, classées de la plus longue à la plus courte.
pgBadger Requêtes qui ont attendu le plus de rapport

Requêtes

La page Requêtes est parfois la plus intéressante, car elle affiche des informations sur les types de requêtes provenant des applications et des utilisateurs. Ces informations peuvent aider à mieux comprendre le type d'évolution de la base de données qu'une application ou un utilisateur met sur le système de base de données, ce qui peut faciliter les réglages futurs. Comme auparavant, la précision de ces chiffres dépend de la valeur de log_min_duration_statement, car toute valeur supérieure à 0 n'enregistrera pas les requêtes.

  • Requêtes par type :graphique à secteurs et tableau indiquant le nombre de types de requêtes différents, tels que INSERT, UPDATE, DELETE, SELECT, etc.
  • Requêtes par base de données :graphique à secteurs et tableau indiquant le nombre de requêtes trouvées par base de données.
  • Requêtes par application :graphique à secteurs et tableau indiquant le nombre de requêtes trouvées par application.
  • Nombre de requêtes annulées :informations sur les requêtes annulées.
pgBadger Requêtes par type Graphique circulaire

Haut

La première page contient des informations sur les temps de requête, les requêtes les plus lentes dans l'ensemble, la fréquence des requêtes, etc. Des requêtes problématiques spécifiques sont susceptibles d'être trouvées ici :

  • Histogramme des heures de requête :histogramme représentant le nombre de requêtes entrant dans chaque groupe d'heures.
  • Requêtes individuelles les plus lentes :liste des requêtes les plus lentes trouvées, classées de la plus longue à la plus courte.
  • Requêtes consommatrices de temps :une liste de requêtes normalisées et leur durée totale, classées du temps le plus long au moins.
  • Requêtes les plus fréquentes :liste des requêtes normalisées et combien de fois elles ont été exécutées, classées du plus au moins.
  • Requêtes normalisées les plus lentes :liste des requêtes normalisées et leur durée moyenne, classées de la plus longue à la plus courte.
pgBadger Rapport sur les requêtes chronophages

Événements

La dernière page est celle des événements, qui contient des informations sur les journaux eux-mêmes et sur tout ce qui n'est pas une requête, un vide ou un point de contrôle.

  • Niveaux de journal :les différents niveaux de journaux apparaissent par ligne, tels que CONTEXT, LOG, STATEMENT, HINTs, WARNINGs et autres.
  • Répartition des événements :graphique linéaire des événements au fil du temps pour les événements PANIQUE, FATAL, ERREUR et AVERTISSEMENT.
  • Erreurs/Événements les plus fréquents :une liste des ÉVÉNEMENTS et leur fréquence, classés du plus courant au moins fréquent.
pgBadger Log Levels camembert

Contribuer

Le projet pgBadger est gratuit et existe sous la licence PostgreSQL. Il est actuellement bien entretenu et mis à jour pour fonctionner avec les nouvelles versions de PostgreSQL au fur et à mesure de son développement. Vous avez des idées pour améliorer pgBadger ? Forkez le projet et montrez à la communauté vos améliorations.

Pour soumettre des bogues, visitez la page des problèmes de github.