Przed głębokim zagłębieniem się w ten temat, krótki opis PgBouncera, jego lekkiej puli połączeń dla PostgreSQL, która radykalnie skraca czas przetwarzania i zasoby potrzebne do utrzymywania dużej liczby połączeń klientów z jedną lub większą liczbą baz danych. Zwykle używany w celu zwiększenia liczby połączeń użytkowników, które można obsłużyć w środowisku o wysokiej wydajności. Aby uzyskać więcej informacji na temat instalowania/konfigurowania PgBouncera, zapoznaj się z dokumentacją tutaj.
Podobnie jak inne narzędzia, PgBouncer ma architekturę rejestrowania stderr/syslog do rejestrowania błędów połączeń, rozłączeń i pooler_error na różnych poziomach szczegółowości. W tej chwili większa część logowania trafia do jednego pliku „pgbouncer.log” i rośnie w nieskończoność. Czasami może to być potencjalne ryzyko, że system przestanie odpowiadać z powodu braku miejsca na dysku w lokalizacji pliku dziennika. Obecnie logowanie PgBouncer nie ma wbudowanej konfiguracji do obracania logów na podstawie wieku lub rozmiaru, dlatego zmusza użytkowników do wyboru alternatywnych metod. IMO, istnieją dwa podejścia do tego :-
- Skonfiguruj PgBouncer w metodzie „syslog”, aby polegać na rotacji logów systemu operacyjnego lub
- Skonfiguruj rotację dzienników za pomocą narzędzi systemu operacyjnego w pliku „pgbouncer.log”.
Metoda 1:
Konfiguracja syslog w PgBouncerze jest dość prosta, ustaw „syslog” na 1 (domyślnie 0); nadaj nazwę rozpoczynającą wiersz dziennika w dziennikach systemu operacyjnego w „syslog_ident” (domyślnie „pgbouncer”) i określ szczegóły obiektu w „syslog_facility” (domyślny demon). Przykładowe dane wyjściowe z moich dzienników systemu operacyjnego (/var/log/messages):
Aug 5 16:54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 próba logowania:db=postgres user=postgres tls=nie Aug 5 16:54:27 raghavt pgbouncer[62549]:S-0x1ce4b10:postgres/[email protected]:5432 nowe połączenie z serwerem (od 127.0.0.1:38947) Aug 5 16 :54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 zamykanie, ponieważ:żądanie zamknięcia klienta (wiek=0) |
Uwaga:Jeśli włączony jest „syslog”, skomentuj lub wyczyść parametr „logfile”, w przeciwnym razie będzie to dodatkowe rejestrowanie.
Metoda 2:
Logrotate to jedno z narzędzi systemu operacyjnego, które ma możliwość systematycznego obracania dzienników i archiwizowania w celu zmniejszenia zapotrzebowania na miejsce na dysku systemu operacyjnego. Każdy plik dziennika może być obsługiwany codziennie, co tydzień, co miesiąc lub gdy jest zbyt duży. Domyślny plik konfiguracyjny „/etc/logrotate.conf” definiuje wiek/rozmiar/interwał rotacji dziennika. Korzystając z tego narzędzia, dzienniki mogą być przechowywane dłużej przy mniejszej ilości miejsca na dysku. Wiele osób mówiło o korzystaniu z narzędzia, które i tak można znaleźć w sieci, dlatego przechodzę bezpośrednio do fazy implementacji.
Najpierw utwórz plik konfiguracyjny w katalogu /etc/logrotate.d/ dla dzienników pgbouncer . Nazwałem go jako „/etc/logrotate.d/pgbouncer” z poniższymi szczegółami:
/var/log/pgbouncer/pgbouncer.log { obróć o 10 missingok sharedscripts notifempty bez kompresji rozmiar 10m dziennie utwórz postgres postgres postrotate /bin/kill -HUP `cat /var/pgbouncer-postgres/pgbouncer.pid 2> /dev/ null` 2>/dev/null ||true endscript } |
O pliku konfiguracyjnym, pierwsza linia wskazuje lokalizację pliku dziennika pgbouncer (wartości parametrów „logfile” w pliku pgbouncer.ini), a następnie parametry, które działają na progach rotacji, takich jak; ile plików dziennika należy utrzymywać (obracać); nie wydawaj błędu i przejdź do następnego logu (missingok); jaki skrypt powinien być wykonany przed/po rotacji (prerotate/porotate); uruchamiać raz lub wiele razy skrypty pre/post (skrypty współdzielone); nie obracaj dziennika, jeśli jest pusty (notifempty); po rotacji stary plik dziennika powinien zostać skompresowany narzędziem gzip (compress/nocompress); o ile rozmiar należy wykonać rotację dziennika (rozmiar); jak często obracać dany dziennik (codziennie); i jakie uprawnienia powinien mieć nowy plik dziennika (utwórz).
Teraz możemy zobaczyć nowe pliki dziennika obrócone z rozmiarem 10M. (Możemy nawet wymusić obrót poleceniem „logrotate -f /etc/logrotate.conf”)
[[email protected] pgbouncer]# ls -lrth łącznie 16K -rw-r—–. 1 postgres postgres 10M 27 lipca 15:30 pgbouncer.log-20160727 -rw-r—–. 1 postgres postgres 11K 27 lipca 18:32 pgbouncer.log |
To było proste, prawda , teraz sprawdźmy to samo w środowisku Windows.
W systemie Windows:
Bardzo mniej wiem o narzędziach systemu Windows, w związku z czym trochę googlowałem i znalazłem narzędzie w wersji dla systemu Windows o nazwie „LogRotateWin” który działa tak samo jak wersja logrotate dla systemu Linux. Aby uzyskać więcej informacji, zapoznaj się ze szczegółową dokumentacją dostępną na stronie Instalacja/Konfiguracja/Użytkowanie tutaj.
Zobaczmy, jak to działa, najpierw pobierz wersję „.msi” LogRotateWin dostępną na stronie jako plik „logrotateSetup*.zip”. Rozpakuj i uruchom plik „.msi”, zainstaluje narzędzie w lokalizacji „c:Program Files (x86)LogRotate”. Domyślny plik konfiguracyjny (logrotate.conf) można znaleźć w „c:Program Files (x86)LogRotateContent”.
Następnie edytuj plik „c:Program Files (x86)LogRotateContentlogrotate.conf” i określ pełną ścieżkę pliku „pgbouncer.log” z tymi samymi parametrami rotacji. Przykładowa kopia mojego pliku konfiguracyjnego przetestowana w systemie Windows 10. (Uwaga:poniższe wartości parametrów są używane do testowania narzędzia)
c:Program Files (x86)LogRotateContent>więcej logrotate.conf „c:Program Files (x86)PgBouncerlogpgbouncer.log” { obróć 10 copytruncate utwórz missingok sharedscripts bez kompresji rozmiar 200k dziennie } |
Aby zweryfikować, wymusiłem rotację dziennika opcją „-f”
c:Program Files (x86)LogRotate>logrotate.exe -f Contentlogrotate.conf logrotate:Wymuś ustawienie opcji true |
Oto wynik:
C:Program Files (x86)PgBouncerlog>dir Wolumen na dysku C nie ma etykiety. Numer seryjny woluminu to F226-9FFB Katalog C:Program Files (x86)PgBouncerlog 08.08.2016 13:31 08.08.2016 13:31 08.08.2016 01:31 0 pgbouncer.log 08.08.2016 13:31 6 626 pgbouncer.log.1 08.08.2016 13:31 13 252 pgbouncer.log.2 3 Plik(i) 19 878 bajtów 2 katalog(i) 26 905 051 136 bajtów wolnych |
Dobra racja !!!.
W większości dystrybucji Linuksa logrotate działa codziennie, używając „logrotate.conf” jako części cronjob, podobnie w systemie Windows możemy zaplanować zadanie w Harmonogramie zadań systemu Windows, aby codziennie obracać dzienniki. FYI, nie badałem zbyt wiele na temat narzędzia „LogRotateWin” tylko na podstawowym poziomie. Jeśli napotkasz jakiś problem, opublikuj go na logrotate General Discussion Forum.
Dziękujemy za przeczytanie.
–Raghav