Azienda ha rilasciato un'estensione omonima pgsentinel (), che aggiunge a PostgreSQL la vista pg_active_session_history — la cronologia delle sessioni attive (in analogia con l'oracolo v$active_session_history).
In sostanza, si tratta semplicemente di istantanee ogni secondo da pg_stat_activity, ma ci sono aspetti importanti:
- Tutte le informazioni accumulate sono memorizzate esclusivamente in memoria e la quantità di memoria consumata è regolata dal numero delle ultime registrazioni memorizzate.
- Aggiunge il campo queryid — proprio quel queryid dall'estensione pg_stat_statements (richiesta l'installazione preliminare).
- Aggiunge il campo top_level_query — il testo della query da cui è stata chiamata la query corrente (nel caso di utilizzo di pl/pgsql)
Elenco completo dei campi pg_active_session_history:
Colonna | Tipo
------------------+--------------------------
ash_time | timestamp with time zone
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 with time zone
xact_start | timestamp with time zone
query_start | timestamp with time zone
state_change | timestamp with time zone
wait_event_type | testo
wait_event | testo
stato | testo
backend_xid | xid
backend_xmin | xid
top_level_query | testo
query | testo
queryid | bigint
backend_type | testo
Non c'è 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. Procediamo con la compilazione:
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:
- In quali attese le sessioni hanno trascorso più tempo?
- Quali sessioni sono state le più attive?
- Quali query sono state le più attive?
È possibile ottenere risposte a queste domande, ovviamente, mediante query SQL, ma è più comodo visualizzarle graficamente evidenziando con il mouse gli intervalli di tempo di interesse. Puoi farlo tramite il programma gratuito (puoi scaricare i binari compilati nella sezione ).
All'avvio di PASH-Viewer (dalla versione 0.4.0) controlla la presenza della vista pg_active_session_history e, se esiste, carica tutta la storia accumulata e continua a leggere i nuovi dati in arrivo, aggiornando il grafico ogni 15 secondi.

Fonte: habr.com
