La cronologia delle sessioni attive in PostgreSQL è una nuova estensione pgsentinel

Azienda pgsentinel ha rilasciato un'estensione omonima pgsentinel (repository github), 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:

  1. Tutte le informazioni accumulate sono memorizzate esclusivamente in memoria e la quantità di memoria consumata è regolata dal numero delle ultime registrazioni memorizzate.
  2. Aggiunge il campo queryid — proprio quel queryid dall'estensione pg_stat_statements (richiesta l'installazione preliminare).
  3. 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 PASH-Viewer (puoi scaricare i binari compilati nella sezione Releases).

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.

La cronologia delle sessioni attive in PostgreSQL è una nuova estensione pgsentinel

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster