Compania a lansat extensia omonimă pgsentinel (), care adaugă în PostgreSQL vizualizarea pg_active_session_history — istoricul sesiunilor active (în analogie cu v$active_session_history din Oracle).
Practic, acestea sunt pur și simplu capturi de ecran realizate la fiecare secundă din pg_stat_activity, dar există aspecte importante:
- Toate informațiile acumulate sunt stocate doar în memoria RAM, iar volumul de memorie consumat este reglat prin numărul ultimelor înregistrări stocate.
- Se adaugă câmpul queryid — acel queryid din extensia pg_stat_statements (instalarea prealabilă este necesară).
- Se adaugă câmpul top_level_query — textul interogării din care a fost invocată interogarea curentă (în cazul utilizării pl/pgsql)
Lista completă a câmpurilor 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
Până acum, nu există un pachet gata pentru instalare. Se recomandă descărcarea surselor și compilarea bibliotecii manual. Este necesară instalarea pachetului 'devel' pentru serverul dumneavoastră și specificarea calea către pg_config în variabila PATH. Compilăm:
cd pgsentinel/src
make
make install
Adăugăm parametrii în postgres.conf:
shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Reîncărcăm PostgreSQL și creăm extensia:
create extension pgsentinel;
Informațiile acumulate permit răspunsuri la întrebări precum:
- Pe ce așteptări sesiunea a petrecut cel mai mult timp?
- Care sesiuni au fost cele mai active?
- Care interogări au fost cele mai active?
Puteți obține răspunsuri la aceste întrebări, desigur, prin interogări SQL, dar este mai convenabil să le vizualizați grafic, selectând cu mouse-ul intervalele de timp dorite. Puteți face acest lucru folosind programul gratuit (încărcarea fișierelor binare compilate poate fi găsită în secțiunea ).
At startup, PASH-Viewer (starting from version 0.4.0) checks for the presence of the pg_active_session_history view, and if it exists, it loads all the accumulated history from it and continues to read new incoming data, updating the chart every 15 seconds.

Sursa: habr.com
