Firma wprowadziła rozszerzenie o tej samej nazwie pgsentinel (), które dodaje do PostgreSQL widok pg_active_session_history — historię aktywnych sesji (analogicznie do oraklowego v$active_session_history).
W zasadzie są to po prostu jednosekundowe migawki z pg_stat_activity, ale są ważne szczegóły:
- Wszystkie zgromadzone informacje są przechowywane tylko w pamięci operacyjnej, a zużywana ilość pamięci jest regulowana przez liczbę ostatnich przechowywanych rekordów.
- Dodawane jest pole queryid — ten sam queryid z rozszerzenia pg_stat_statements (wymagana jest wcześniejsza instalacja).
- Dodawane jest pole top_level_query — tekst zapytania, z którego wywołano bieżące zapytanie (w przypadku użycia pl/pgsql)
Pełna lista pól pg_active_session_history:
Column | Type
------------------+--------------------------
ash_time | timestamp with time zone
datid | oid
datname | text
pid | integer
usesysid | oid
usename | text
application_name | text
client_addr | text
client_hostname | text
client_port | integer
backend_start | timestamp with time zone
xact_start | timestamp with time zone
query_start | timestamp with time zone
state_change | timestamp with time zone
wait_event_type | text
wait_event | text
state | text
backend_xid | xid
backend_xmin | xid
top_level_query | text
query | text
queryid | bigint
backend_type | text
Na razie nie ma gotowego pakietu do instalacji. Proponuje się pobranie źródeł i samodzielne skompilowanie biblioteki. Wcześniej należy zainstalować pakiet „devel” dla swojego serwera i dodać ścieżkę do pg_config do zmiennej PATH. Kompilujemy:
cd pgsentinel/src
make
make install
Dodajemy parametry do postgres.conf:
shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Restartujemy PostgreSQL i tworzymy rozszerzenie:
create extension pgsentinel;
Zgromadzone informacje pozwalają odpowiedzieć na takie pytania jak:
- Na jakich oczekiwaniach sesje spędzały najwięcej czasu?
- Które sesje były najbardziej aktywne?
- Jakie zapytania były najbardziej aktywne?
Odpowiedzi na te pytania można uzyskać, oczywiście, za pomocą zapytań SQL, ale wygodniej jest zobaczyć to wizualnie na wykresie, zaznaczając interesujące przedziały czasu myszką. Można to zrobić za pomocą darmowego programu (zebrane binaria można pobrać w sekcji ).
Przy starcie PASH-Viewer (z wersją 0.4.0) sprawdza, czy istnieje widok pg_active_session_history, a jeśli tak, ładuje z niego całą zgromadzoną historię i kontynuuje odczytywanie nowych danych, aktualizując wykres co 15 sekund.

Źródło: habr.com
