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

Comment faire pivoter les journaux PgBouncer sous Linux/Windows ?

Avant d'approfondir le sujet, un bref aperçu de PgBouncer, c'est un pooleur de connexions léger pour PostgreSQL qui réduit considérablement le temps de traitement et les ressources nécessaires pour maintenir un grand nombre de connexions client à une ou plusieurs bases de données. Généralement utilisé pour augmenter le nombre de connexions utilisateur pouvant être gérées dans un environnement hautes performances. Pour plus de détails sur l'installation/la configuration de PgBouncer, reportez-vous à la documentation ici.
Comme d'autres outils, PgBouncer a une architecture de journalisation stderr/syslog pour enregistrer les connexions, les déconnexions et les pooler_errors avec différents niveaux de verbosité. À partir de maintenant, la plus grande partie de la journalisation va dans un seul fichier "pgbouncer.log" et grandit sans cesse. Parfois, il peut y avoir un risque potentiel de rendre un système qui ne répond pas en raison d'un manque d'espace disque à l'emplacement du fichier journal. À l'heure actuelle, la journalisation PgBouncer n'a pas de configuration intégrée pour faire pivoter les journaux en fonction de l'âge ou de la taille, ce qui oblige les utilisateurs à choisir des méthodes alternatives. IMO, il y a deux approches pour le gérer :-

  1. Configurer PgBouncer dans la méthode "syslog" pour s'appuyer sur la rotation des journaux du système d'exploitation ou
  2. Configurez la rotation des journaux à l'aide des utilitaires du système d'exploitation sur le fichier "pgbouncer.log".

Méthode 1 :

Il est assez simple de configurer syslog dans PgBouncer, définissez « syslog » sur 1 (0 par défaut); donnez un nom pour commencer la ligne de journal dans les journaux du système d'exploitation dans "syslog_ident" (par défaut "pgbouncer") et spécifiez les détails de l'installation dans "syslog_facility" (démon par défaut). Un exemple de sortie des journaux de mon système d'exploitation (/var/log/messages) :

5 août 16:54:27 raghavt pgbouncer[62549] :C-0x1cdfe60 :postgres/postgres@unix(62621):6432 tentative de connexion :db=postgres user=postgres tls=non
5 août 16:54:27 raghavt pgbouncer[62549] :S-0x1ce4b10 :postgres/[email protected]:5432 nouvelle connexion au serveur (à partir de 127.0.0.1:38947)
5 août 16 :54:27 raghavt pgbouncer[62549] :C-0x1cdfe60 :postgres/postgres@unix(62621):6432 fermeture car :demande de fermeture du client (âge=0)

Remarque :Si "syslog" est activé, commentez ou effacez le paramètre "logfile", sinon il s'agira d'une journalisation supplémentaire.

Méthode 2 :

Logrotate est l'un des utilitaires du système d'exploitation qui a la capacité de faire pivoter systématiquement les journaux et de les archiver pour réduire l'espace disque requis par le système d'exploitation. Chaque fichier journal peut être géré quotidiennement, hebdomadairement, mensuellement ou lorsqu'il devient trop volumineux. Un fichier de configuration par défaut "/etc/logrotate.conf" définit l'âge/la taille/l'intervalle de rotation des journaux. Grâce à cet outil, les journaux peuvent être conservés plus longtemps avec moins d'espace disque. De nombreuses personnes ont parlé de l'utilisation de l'utilitaire que vous pouvez découvrir sur le net de toute façon, je saute donc directement dans la phase de mise en œuvre.
Tout d'abord, créez un fichier de configuration dans le répertoire /etc/logrotate.d/ pour les journaux de pgbouncer . Je l'ai nommé "/etc/logrotate.d/pgbouncer" avec les détails ci-dessous :

/var/log/pgbouncer/pgbouncer.log {
rotate 10
missingok
sharedscripts
notifempty
nocompress
taille 10m
quotidiennement
créer 0640 postgres postgres
postrotation
/bin/kill -HUP `cat /var/pgbouncer-postgres/pgbouncer.pid 2> /dev/ null` 2>/dev/null ||true
endscript
}

À propos du fichier de configuration, la première ligne indique l'emplacement du fichier journal de pgbouncer (valeurs des paramètres « logfile » dans le fichier pgbouncer.ini) et ensuite les paramètres qui fonctionnent sur les seuils de rotation comme ; combien de fichiers journaux conserver (rotation) ; n'émettez aucune erreur et passez au journal suivant (missingok); quel script doit être exécuté avant/après la rotation (prerotate/postrotate) ; exécuter une ou plusieurs fois des scripts pré/post (sharedscripts) ; ne pas faire pivoter le journal s'il est vide (notifempty) ; après la rotation, un ancien fichier journal doit être compressé avec l'utilitaire gzip (compress/nocompress) ; sur la quantité de rotation de journal de taille à effectuer (taille) ; la fréquence de rotation d'un journal particulier (quotidiennement) ; et quelle autorisation le nouveau fichier journal devrait être (créer).

Nous pouvons maintenant voir les nouveaux fichiers journaux pivotés avec une taille de 10 M. (On peut même forcer la rotation avec la commande « logrotate -f /etc/logrotate.conf »)

[[email protected] pgbouncer]# ls -lrth
total 16K
-rw-r—–. 1 postgres postgres 10M 27 juillet 15:30 pgbouncer.log-20160727
-rw-r—–. 1 postgres postgres 11K 27 juillet 18:32 pgbouncer.log

C'était simple non , vérifions maintenant la même chose sur l'environnement Windows.

Sous Windows :

Je connais très peu les utilitaires Windows, par conséquent j'ai fait quelques recherches sur Google et j'ai trouvé un utilitaire de version Windows appelé "LogRotateWin" qui fonctionne comme la version Linux de logrotate. Pour plus de détails, reportez-vous à la documentation détaillée disponible sur l'installation/la configuration/l'utilisation ici.
Voyons comment cela fonctionne, téléchargez d'abord la version ".msi" de LogRotateWin disponible sur le site comme fichier « logrotateSetup*.zip ». Extrayez et exécutez le fichier ".msi", il installera l'utilitaire à l'emplacement "c:Program Files (x86)LogRotate". Vous pouvez trouver le fichier de configuration par défaut (logrotate.conf) sous "c:Program Files (x86)LogRotateContent".
Ensuite, modifiez le fichier "c:Program Files (x86)LogRotateContentlogrotate.conf" et spécifiez le chemin complet du fichier "pgbouncer.log" avec les mêmes paramètres de rotation. Un exemple de copie de mon fichier de configuration testé sur Windows 10. (Remarque :les valeurs de paramètre ci-dessous sont utilisées pour tester l'utilitaire)

c:Program Files (x86)LogRotateContent>plus logrotate.conf
"c:Program Files (x86)PgBouncerlogpgbouncer.log" {
rotate 10
copytruncate
créer
missingok
scripts partagés
nocompress
taille 200k
quotidien
}

Pour vérifier, j'ai forcé la rotation des logs avec l'option "-f"

c:Program Files (x86)LogRotate>logrotate.exe -f Contentlogrotate.conf
logrotate :Forcer l'option définie sur true

Voici le résultat :

C:Program Files (x86)PgBouncerlog>dir
Le volume du lecteur C n'a pas d'étiquette.
Le numéro de série du volume est F226-9FFB

Répertoire des fichiers C:Program (x86)PgBouncerlog

08/08/2016 13:31

.
08/08/2016 13:31 ..
08/08/2016 13:31 0 pgbouncer.log
08/08/2016 13h31 6 626 pgbouncer.log.1
08/08/2016 13h31 13 252 pgbouncer.log.2
3 Fichier(s) 19 878 octets
2 Dir(s) 26 905 051 136 octets libres

Bien !!!.
Sur la plupart des distributions Linux, logrotate s'exécute quotidiennement à l'aide de "logrotate.conf" dans le cadre de cronjob, de même sous Windows, nous pouvons planifier une tâche dans le planificateur de tâches Windows pour faire pivoter les journaux quotidiennement. Pour votre information, je n'ai pas beaucoup exploré l'utilitaire "LogRotateWin" juste un niveau de base. Si vous rencontrez un problème, veuillez le publier sur  forum de discussion générale logrotate.
Merci d'avoir lu.
–Raghav