Azienda ha rilasciato l'estensione omonima pgsentinel (), che aggiunge a PostgreSQL la vista pg_active_session_history — la storia delle sessioni attive (simile alla v$active_session_history di Oracle).
In sostanza, si tratta semplicemente di istantanee al secondo di pg_stat_activity, ma ci sono punti importanti:
- Tutte le informazioni accumulate sono memorizzate solo in memoria volatile, e il volume di memoria utilizzato è regolato dal numero delle ultime registrazioni memorizzate.
- Viene aggiunto il campo queryid — quel queryid dall'estensione pg_stat_statements (richiesta installazione preventiva).
- Viene aggiunto il campo top_level_query — il testo della query da cui è stata invocata la query corrente (in caso di utilizzo di pl/pgsql)
Elenco completo dei campi di pg_active_session_history:
Colonna | Tipo
------------------+--------------------------
ash_time | timestamp con fuso orario
datid | oid
datname | testo
pid | intero
usesysid | oid
usename | testo
application_name | testo
client_addr | testo
client_hostname | testo
client_port | intero
backend_start | timestamp con fuso orario
xact_start | timestamp con fuso orario
query_start | timestamp con fuso orario
state_change | timestamp con fuso orario
wait_event_type | testo
wait_event | testo
state | testo
backend_xid | xid
backend_xmin | xid
top_level_query | testo
query | testo
queryid | bigint
backend_type | testo
Non è disponibile ancora un pacchetto pronto per l'installazione. Si consiglia di scaricare i sorgenti e compilare la libreria manualmente. Prima è necessario installare il pacchetto "devel" per il proprio server e aggiungere il percorso di pg_config alla variabile PATH. Compilare:
cd pgsentinel/src
make
make install
Aggiungiamo i parametri in postgres.conf:
shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Riavviamo PostgreSQL e creiamo l'estensione:
create extension pgsentinel;
Le informazioni accumulate permettono di rispondere a domande come:
- Su quali aspettative di sessione è stato speso più tempo?
- Quali sessioni sono state le più attive?
- Quali query sono state le più attive?
Certo, si possono ottenere risposte a queste domande tramite query SQL, ma è più comodo visualizzarle graficamente, evidenziando con il mouse gli intervalli di tempo di interesse. Puoi farlo utilizzando il programma gratuito (puoi scaricare i file binari raccolti nella sezione ).
All'avvio di PASH-Viewer (a partire dalla versione 0.4.0) verifica la presenza della vista pg_active_session_history e, se esiste, carica l'intera cronologia accumulata e continua a leggere i nuovi dati in arrivo, aggiornando il grafico ogni 15 secondi.

Fonte: habr.com
