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 :-
- Nakonfigurujte PgBouncer v metodě „syslog“, aby spoléhal na rotaci protokolu OS nebo
- 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