
Ułatwianie pracy z PostgreSQL cz. III – monitor połączeń do bazy danych

W tej odsłonie serii o przydatnych narzędziach do pracy z PostgreSQL omówimy narzędzie, które z pewnością przypadanie do gustu administratorom baz danych – mowa o interaktywnym monitorze aktywności serwera pg_activity.
W tej odsłonie serii o przydatnych narzędziach do pracy z PostgreSQL omówimy narzędzie, które z pewnością przypadanie do gustu administratorom baz danych – mowa o interaktywnym monitorze aktywności serwera pg_activity.
Administracja bazą danych wymaga sprawdzenia od czasu do czasu tego, co dzieje się w danym momencie w systemie. Oczywiście, w przypadku sytuacji kryzysowych nic nie zastąpi dobrze zaprojektowanego mechanizmu wczesnego reagowania informującego o wystąpieniu potencjalnie niepożądanego stanu w systemie bazodanowym. Niemniej, w celu zorientowania się w tym, jak wygląda sytuacja, często trzeba sięgnąć do wcześniej przygotowanych skryptów administracyjnych lub napisać odpowiednie polecenia ad hoc po połączeniu się z serwerem.
Do monitoringu parametrów systemu EuroLinux można wykorzystać wielu narzędzi (od graficznych po terminalowe), takich jak top
, ps
, czy htop
. Pozwalają one na szybkie rozeznanie w stanie systemu bez potrzeby pisania własnych skryptów parsujących informacje znajdujące się w katalogu /proc
. Podobnym udogodnieniem jest program pg_activity
, który wyraźnie czerpie garściami z programu htop
i stara się dostarczyć najprzydatniejsze informacje dla administratora w podobny sposób.
Instalacja pg_activity
Kod programu został napisany w języku Python i jest udostępniany przy pomocy GitHub na licencji Open Source zbliżonej do MIT (o której można przeczytać na naszym blogu).
Instalację można przeprowadzić w prosty sposób przy użyciu polecenia pip3
.
$ pip3 install pg_activity
W celu izolacji instalacji dobrym pomysłem może być skorzystanie ze środowiska wirtualnego, które można utworzyć i aktywować w następujący sposób:
$ python3 -m venv pgactivityenv $ . pgactivityenv/bin/activate
Dzięki temu będziemy mieli pewność, że aplikacja na czas testów nie zmieni stanu, ani bibliotek w ścieżkach systemowych.
Korzystanie z pg_activity
Jak widać na powyższym zrzucie ekranu, po uruchomieniu aplikacji zostajemy powitani czytelnym ekranem z krótkim podsumowaniem u góry oraz listą wyszczególnionych połączeń na dole.
Poszczególne kolumny odpowiadają następującym informacjom:
PID
– numer procesu, który odpowiada za tę sesję;DATABASE
– nazwa bazy danych, do której nastąpiło połączenie;APP
– wyświetla nazwę aplikacji łączącej się do bazy (SET application_name
). Warto tu wspomnieć, że wykorzystanie tego mechanizmu w
znaczącym stopniu ułatwia utrzymanie aplikacji wykorzystującej PostgreSQL;USER
– użytkownik bazy danych, który dokonał połączenia;CLIENT
– kolumna podpowiada, w jaki sposób zostało dokonane połączenie. W
tym wypadkulocal
odpowiada za połączenie wykonane przez socket;TIME
– czas działania procesu;W
– informacja o tym, czy dana sesja czeka na jakimś locku;state
– informacja o stanie, w jakim znajduje się transakcja;Query
– zapytanie, które aktualnie jest wykonywane.
Ponadto dostępne są również widoki pozwalające przyjrzeć się zapytaniom, które aktualnie czekają na zwolnienie jakiegoś zasobu. W tym celu wystarczy nacisnąć klawisz F2
lub 2
.
Tak samo możemy przejrzeć blokujące zapytania, przechodząc do dedykowanego im widoku, który aktywujemy przez wciśnięcie klawisza F3
lub 3
.
Informacje na temat interaktywnego korzystania z aplikacji można uzyskać przez wciśnięcie klawisza h
, który prezentuje ekran pomocy.
Korzystanie z tego narzędzia podczas codziennej pracy zdecydowanie ułatwia monitorowanie stanu bazy danych. Pozwala na wyrobienie sobie nawyku przeglądania podłączonych procesów, ze szczególnym uwzględnieniem tych, które zakładają blokady. W przypadku tabel, które stanowią tzw. hot path, monitoring blokad jest wręcz niezbędny, ponieważ ich zakładanie w znaczący sposób będzie rzutować na szybkość działania aplikacji korzystających z bazy danych.
Podsumowanie
Mam nadzieję, że prezentowany w tym tekście program wzbogaci Waszą listę użytecznych narzędzi do pracy z PostgreSQL i przede wszystkim, że będzie przydatny w codziennej pracy. Zachęcam do zapoznania się z poprzednimi poradnikami z tej serii, do których linki można znaleźć poniżej.