Istoricul sesiunilor active în PostgreSQL - noua extensie pgsentinel

Compania pgsentinel a lansat extensia omonimă pgsentinel (repository github), 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:

  1. Toate informațiile acumulate sunt stocate doar în memoria RAM, iar volumul de memorie consumat este reglat prin numărul ultimelor înregistrări stocate.
  2. Se adaugă câmpul queryid — acel queryid din extensia pg_stat_statements (instalarea prealabilă este necesară).
  3. 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 PASH-Viewer (încărcarea fișierelor binare compilate poate fi găsită în secțiunea Releases).

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.

Istoricul sesiunilor active în PostgreSQL - noua extensie pgsentinel

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster