sql >> Database >  >> RDS >> PostgreSQL

Hoe PgBouncer-logboeken draaien in Linux/Windows?

Voordat we dieper op het onderwerp ingaan, een korte schets over PgBouncer, het is een lichtgewicht verbindingspooler voor PostgreSQL die de verwerkingstijd en middelen voor het onderhouden van een groot aantal clientverbindingen met een of meer databases drastisch vermindert. Meestal gebruikt om het aantal gebruikersverbindingen te vergroten dat kan worden afgehandeld in een omgeving met hoge prestaties. Raadpleeg de documentatie hier voor meer informatie over het installeren/configureren van PgBouncer.
Net als andere tools heeft PgBouncer een stderr/syslog-logboekarchitectuur om verbinding, verbreking en pooler_errors met verschillende breedsprakigheidsniveaus vast te leggen. Vanaf nu gaat het grootste deel van het loggen naar één enkel bestand "pgbouncer.log" en groeit eindeloos. Soms kan het een potentieel risico zijn dat een systeem niet meer reageert vanwege een gebrek aan schijfruimte op de locatie van het logbestand. Op dit moment heeft PgBouncer-logging geen ingebouwde configuratie om logs te roteren op basis van leeftijd of grootte, daarom dwingt het gebruikers om alternatieve methoden te kiezen. IMO, er zijn twee manieren om ermee om te gaan:-

  1. Configureer PgBouncer in "syslog"-methode om te vertrouwen op OS-logrotatie of
  2. Configureer logrotatie met behulp van OS-hulpprogramma's in het bestand "pgbouncer.log".

Methode 1:

Het is vrij eenvoudig om syslog in PgBouncer te configureren, "syslog" in te stellen op 1 (standaard 0); geef een naam om de logregel in OS-logboeken te beginnen in "syslog_ident" (standaard 'pgbouncer') en specificeer de faciliteitsdetails in "syslog_facility" (standaarddaemon). Een voorbeelduitvoer van mijn OS-logboeken (/var/log/messages):

5 aug 16:54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 inlogpoging:db=postgres user=postgres tls=nee
Aug 5 16:54:27 raghavt pgbouncer[62549]:S-0x1ce4b10:postgres/[email protected]:5432 nieuwe verbinding met server (vanaf 127.0.0.1:38947)
5 aug 16 :54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 sluiten omdat:verzoek tot sluiten van klant (leeftijd=0)

Opmerking:als "syslog" is ingeschakeld, becommentarieert u de parameter "logfile" of maakt u deze leeg, anders wordt het extra logboekregistratie.

Methode 2:

Logrotate is een van de OS-hulpprogramma's die de mogelijkheid heeft om logboeken systematisch te roteren en te archiveren om de vereiste schijfruimte van een besturingssysteem te verminderen. Elk logbestand kan dagelijks, wekelijks, maandelijks worden verwerkt of wanneer het te groot wordt. Een standaardconfiguratiebestand "/etc/logrotate.conf" definieert de logrotatieleeftijd/grootte/interval. Met behulp van deze tool kunnen logs langer worden bewaard met minder schijfruimte. Veel mensen hebben gesproken over het gebruik van het hulpprogramma, dat je toch via het internet kunt ontdekken, dus ik spring direct in de implementatiefase.
Maak eerst een configuratiebestand in de map /etc/logrotate.d/ voor pgbouncer-logboeken . Ik heb het genoemd als "/etc/logrotate.d/pgbouncer" met onderstaande details:

/var/log/pgbouncer/pgbouncer.log {
draai 10
missingok
sharedscripts
notifempty
nocompress
grootte 10m
dagelijks
maak 0640 postgres postgres
postrotate
/bin/kill -HUP `cat /var/pgbouncer-postgres/pgbouncer.pid 2> /dev/ null` 2>/dev/null ||true
endscript
}

Over het configuratiebestand geeft de eerste regel de locatie van het pgbouncer-logbestand aan ("logfile"-parameterwaarden in het pgbouncer.ini-bestand) en de volgende zijn de parameters die werken op rotatiedrempels zoals; hoeveel logbestanden onderhouden (roteren); geef geen foutmelding en ga door naar het volgende logboek (missingok); welk script moet worden uitgevoerd pre/post rotatie (prerotate/postrotate); een of meerdere keren pre/post-scripts uitvoeren (sharedscripts); draai het logboek niet als het leeg is (melding leeg); na rotatie moet een oud logbestand worden gecomprimeerd met gzip-hulpprogramma (compress/nocompress); op hoeveel grootte log rotatie moet worden uitgevoerd (grootte); hoe vaak een bepaald logboek moet worden gedraaid (dagelijks); en welke toestemming nieuw logbestand moet zijn (maken).

Nu kunnen we nieuwe logbestanden geroteerd zien met een grootte van 10 miljoen. (We kunnen de rotatie zelfs forceren met het commando "logrotate -f /etc/logrotate.conf")

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

Dat was simpel toch , laten we nu hetzelfde controleren in een Windows-omgeving.

Op Windows:

Ik weet heel weinig over Windows-hulpprogramma's, daarom heb ik wat gegoogeld en vond ik een hulpprogramma voor de Windows-versie genaamd 'LogRotateWin' die hetzelfde werkt als de Linux-versie van logrotate. Raadpleeg voor meer details de gedetailleerde documentatie die beschikbaar is over Installatie/Configuratie/Gebruik hier.
Laten we eens kijken hoe het werkt. Download eerst de ".msi"-versie van LogRotateWin die beschikbaar is op de site als "logrotateSetup*.zip"-bestand. Pak het ".msi"-bestand uit en voer het uit, het zal het hulpprogramma installeren op de locatie "c:Program Files (x86)LogRotate". U kunt het standaardconfiguratiebestand (logrotate.conf) vinden onder "c:Program Files (x86)LogRotateContent".
Bewerk vervolgens het bestand "c:Program Files (x86)LogRotateContentlogrotate.conf" en specificeer het volledige pad van het bestand "pgbouncer.log" met dezelfde rotatieparameters. Een voorbeeldkopie van mijn configuratiebestand getest op Windows 10. (Opmerking:onderstaande parameterwaarden worden gebruikt om het hulpprogramma te testen)

c:Program Files (x86)LogRotateContent>meer logrotate.conf
“c:Program Files (x86)PgBouncerlogpgbouncer.log” {
rotate 10
copytruncate
create
missingok
sharedscripts
nocompress
grootte 200k
dagelijks
}

Om te verifiëren, heb ik de logrotatie geforceerd met de "-f" optie

c:Program Files (x86)LogRotate>logrotate.exe -f Contentlogrotate.conf
logrotate:optie forceren ingesteld op true

Dit is het resultaat:

C:Program Files (x86)PgBouncerlog>dir
Volume in station C heeft geen label.
Volumeserienummer is F226-9FFB

Directory van C:Program Files (x86)PgBouncerlog

08/08/2016 13:31

.
08/08/2016 13:31 ..
08/08/2016 13:31 0 pgbouncer.log
08/08/2016 01:31 PM 6.626 pgbouncer.log.1
08/08/2016 01:31 PM 13.252 pgbouncer.log.2
3 Bestand(en) 19.878 bytes
2 Dir(s) 26.905.051.136 bytes gratis

Nice right!!!.
Op de meeste Linux-distributies wordt logrotate dagelijks uitgevoerd met behulp van "logrotate.conf" als onderdeel van cronjob, en op dezelfde manier kunnen we in Windows een taak plannen in Windows Taakplanner om de logs dagelijks te roteren. Ter info, ik heb niet veel onderzocht over het hulpprogramma "LogRotateWin", slechts een basisniveau. Als je een probleem tegenkomt, plaats het dan op het logrotate algemene discussieforum.
Bedankt voor het lezen.
–Raghav


  1. Het minimum van twee waarden in SQL verkrijgen

  2. T-SQL:kolom selecteren op basis van MAX (andere kolom)

  3. Hoe de TRIM()-functie werkt in MySQL

  4. Is er een verschil tussen SQL Server Express (2012) en LocalDB?