sql >> Databáze >  >> RDS >> PostgreSQL

Jak otočit protokoly PgBouncer v Linuxu/Windows?

Než se do tématu hlouběji ponoříte, krátký nástin o PgBouncer, jeho jednoduchém nástroji pro sdílení připojení pro PostgreSQL, který dramaticky snižuje dobu zpracování a zdroje pro udržování velkého počtu klientských připojení k jedné nebo více databázím. Obvykle se používá ke zvýšení počtu uživatelských připojení, která lze zpracovat ve vysoce výkonném prostředí. Další podrobnosti o instalaci/konfiguraci PgBouncer naleznete v dokumentaci zde.
Stejně jako ostatní nástroje má i PgBouncer architekturu protokolování stderr/syslog pro záznam připojení, odpojení a  pooler_errors s různými úrovněmi výřečnosti. Od nynějška jde větší část protokolování do jediného souboru „pgbouncer.log“ a nekonečně roste. Někdy se může jednat o potenciální riziko, že systém přestane reagovat kvůli nedostatku místa na disku v umístění souboru protokolu. V současné době nemá protokolování PgBouncer žádnou vestavěnou konfiguraci pro rotaci protokolů na základě věku nebo velikosti, a proto nutí uživatele volit alternativní metody. IMO, existují dva přístupy, jak to zvládnout :-

  1. Nakonfigurujte PgBouncer v metodě „syslog“, aby spoléhal na rotaci protokolu OS nebo
  2. Nakonfigurujte rotaci protokolů pomocí nástrojů OS v souboru „pgbouncer.log“.

Metoda 1:

Konfigurace syslogu v PgBouncer je docela jednoduchá, nastavte „syslog“ na 1 (výchozí 0); zadejte název pro začátek řádku protokolu v protokolech OS v „syslog_ident“ (výchozí ‚pgbouncer‘) a zadejte podrobnosti o zařízení v „syslog_facility“ (výchozí démon). Ukázkový výstup z mých protokolů OS (/var/log/messages):

5. srpna 16:54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 pokus o přihlášení:db=postgres user=postgres tls=ne
5. srpna 16:54:27 raghavt pgbouncer[62549]:S-0x1ce4b10:postgres/[email protected]:5432 nové připojení k serveru (od 127.0.0.1:38947)
5. srpna :54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 zavírání, protože:požadavek na uzavření klienta (věk=0)

Poznámka:Pokud je povoleno „syslog“, zakomentujte nebo vymažte parametr „logfile“, jinak půjde o dodatečné protokolování.

Metoda 2:

Logrotate je jeden z nástrojů operačního systému, který má schopnost systematicky otáčet protokoly a archivovat, aby se snížila potřeba místa na disku operačního systému. Každý soubor protokolu lze zpracovávat denně, týdně, měsíčně nebo když se příliš zvětší. Výchozí konfigurační soubor „/etc/logrotate.conf“ definuje stáří/velikost/interval rotace protokolu. Pomocí tohoto nástroje lze protokoly uchovávat déle s menším prostorem na disku. Mnoho lidí se vyjádřilo o použití nástroje, který můžete stejně zjistit přes síť, takže skočím přímo do fáze implementace.
Nejprve vytvořte konfigurační soubor v adresáři /etc/logrotate.d/ pro protokoly pgbouncer . Pojmenoval jsem to jako „/etc/logrotate.d/pgbouncer“ s níže uvedenými podrobnostmi:

/var/log/pgbouncer/pgbouncer.log {
otočit 10
chybějící
sharedscripts
notifempty
nocompress
velikost 10m
denně
vytvořit 0640 postgres postgres
postrotate
/bin/kill -HUP `cat /var/pgbouncer-postgres/pgbouncer.pid 2> /dev/ null` 2>/dev/null ||true
endscript
}

Pokud jde o konfigurační soubor, první řádek označuje umístění souboru protokolu pgbouncer (hodnoty parametru „logfile“ v souboru pgbouncer.ini) a další jsou parametry, které fungují na prahu rotace, jako je; kolik souborů protokolu udržovat (otáčet); nevydat žádnou chybu a přejít na další protokol (chybějící); jaký skript by měl být proveden před/po rotaci (prerotate/postrotate); spustit jednou nebo vícekrát před/po skripty (sharedscripts); neotáčejte protokol, pokud je prázdný (notifempty); po otočení by měl být starý soubor protokolu zkomprimován pomocí nástroje gzip (compress/nocompress); na jaké velikosti má být rotace logu provedena (velikost); jak často otáčet konkrétní kládu (denně); a jaké oprávnění by měl mít nový soubor protokolu (vytvořit).

Nyní můžeme vidět nové soubory protokolu otočené o velikost 10 milionů. (Dokonce můžeme rotaci vynutit příkazem “logrotate -f /etc/logrotate.conf”)

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

To bylo jednoduché správně nyní umožňuje zkontrolovat totéž v prostředí Windows.

V systému Windows:

O nástrojích systému Windows vím mnohem méně, proto jsem trochu googloval a našel nástroj pro verzi systému Windows s názvem „LogRotateWin“ který funguje stejně jako linuxová verze logrotate. Další podrobnosti naleznete v podrobné dokumentaci dostupné v části Instalace/Konfigurace/Použití zde.
Podívejme se, jak to funguje, nejprve si stáhněte „.msi“ verzi LogRotateWin dostupnou na webu jako soubor „logrotateSetup*.zip“. Rozbalte a spusťte soubor „.msi“, obslužný program se nainstaluje do umístění „c:Program Files (x86)LogRotate“. Výchozí konfigurační soubor (logrotate.conf) můžete najít pod „c:Program Files (x86)LogRotateContent“.
Dále upravte soubor „c:Program Files (x86)LogRotateContentlogrotate.conf“ a zadejte úplnou cestu souboru „pgbouncer.log“ se stejnými parametry rotace. Ukázková kopie mého konfiguračního souboru testovaného na Windows 10. (Poznámka:Níže uvedené hodnoty parametrů se používají k testování nástroje)

c:Program Files (x86)LogRotateContent>více logrotate.conf
“c:Program Files (x86)PgBouncerlogpgbouncer.log” {
rotate 10
copytruncate
vytvořit
chybějící
sdílené skripty
nocompress
velikost 200k
denně
}

Abych to ověřil, vynutil jsem rotaci protokolu pomocí možnosti „-f“

c:Program Files (x86)LogRotate>logrotate.exe -f Contentlogrotate.conf
logrotate:Vynutit nastavení možnosti na hodnotu true

Zde je výsledek:

C:Program Files (x86)PgBouncerlog>dir
Svazek na jednotce C nemá štítek.
Sériové číslo svazku je F226-9FFB

Adresář souborů C:Program Files (x86)PgBouncerlog

8. 8. 2016 13:31

.
8. 8. 2016 13:31 ..
8. 8. 2016 13:31 0 pgbouncer.log
08/08/2016 13:31 18 626 pgbouncer.log.1
08/08/2016 13:31 13 252 pgbouncer.log.2
3 Soubor(y) 19 878 bajtů
2 Dir(y) 26 905 051 136 bajtů zdarma

Správně!!!.
Na většině distribucí Linuxu se logrotate spouští denně pomocí „logrotate.conf“ jako součást cronjob, podobně ve Windows můžeme naplánovat úlohu ve Windows Task Scheduler, aby se protokoly denně střídaly. FYI, o nástroji „LogRotateWin“ jsem toho moc neprozkoumal, jen základní úroveň. V případě, že narazíte na nějaký problém, zveřejněte jej na logrotate Obecné diskusní fórum.
Děkuji za přečtení.
–Raghav


  1. Oracle Floats vs Number

  2. Měříte výkon serveru SQL pomocí těchto metrik?

  3. Oblíbené obrázky Docker pro server MySQL a MariaDB

  4. Vysvětlení příkazu DROP TABLE na serveru SQL