Storia delle sessioni attive in PostgreSQL — il nuovo estensione pgsentinel

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

  1. Tutte le informazioni accumulate sono memorizzate solo in memoria volatile, e il volume di memoria utilizzato è regolato dal numero delle ultime registrazioni memorizzate.
  2. Viene aggiunto il campo queryid — quel queryid dall'estensione pg_stat_statements (richiesta installazione preventiva).
  3. 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 PASH-Viewer (puoi scaricare i file binari raccolti nella sezione Releases).

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.

Storia delle sessioni attive in PostgreSQL — il nuovo 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