Cronologia delle sessioni attive PostgreSQL: nuova estensione pgsentinel

società pgsentinel ha rilasciato l'estensione pgsentinel con lo stesso nome (repository github), che aggiunge la vista pg_active_session_history a PostgreSQL — la cronologia delle sessioni attive (simile a v$active_session_history di Oracle).

Essenzialmente, queste sono semplicemente istantanee secondo per secondo da pg_stat_activity, ma ci sono punti importanti:

  1. Tutte le informazioni accumulate vengono archiviate solo nella RAM e la quantità di memoria consumata è regolata dal numero degli ultimi record memorizzati.
  2. Viene aggiunto il campo queryid: lo stesso queryid dell'estensione pg_stat_statements (è richiesta la preinstallazione).
  3. Viene aggiunto il campo top_level_query: il testo della query da cui è stata chiamata la query corrente (se si utilizza pl/pgsql)


Elenco completo dei campi pg_active_session_history:

      Colonna | Digitare ----+------------------------ ash_time | timestamp con fuso orario datid | oid nomedata | testo pid | intero usesysid | nomeuso oid | testo nome_applicazione | testo indirizzo_cliente | testo nomehost_client | testo porta_client | 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 | stato del testo | testo backend_xid | xid backend_xmin | xid top_level_query | query di testo | IDinterrogazione testo | bigint tipo_backend | testo                     

Non esiste ancora un pacchetto pronto per l'installazione. Si consiglia di scaricare i sorgenti e assemblare autonomamente la libreria. Devi prima installare il pacchetto “devel” per il tuo server e impostare il percorso su pg_config nella variabile PATH. Raccogliamo:

cd pgsentinel/src
make
make install

Aggiungi parametri a postgres.conf:

shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = tutti

# numero di record recenti conservati in memoria
pgsentinel_ash.max_entries = 10000

Riavvia PostgreSQL e crea un'estensione:

creare l'estensione pgsentinel;

Le informazioni accumulate ci consentono di rispondere a domande come:

  • In quali sessioni di attesa hai trascorso più tempo?
  • Quali sessioni sono state le più attive?
  • Quali richieste sono state le più attive?

Ovviamente puoi ottenere risposte a queste domande utilizzando query SQL, ma è più comodo vederlo visivamente su un grafico evidenziando gli intervalli di tempo di interesse con il mouse. Puoi farlo con un programma gratuito Visualizzatore PASH (puoi scaricare i binari raccolti nella sezione Uscite).

All'avvio PASH-Viewer (a partire dalla versione 0.4.0) verifica la presenza della vista pg_active_session_history e se esiste carica da essa tutta la cronologia accumulata e continua a leggere i nuovi dati in ingresso, aggiornando il grafico ogni 15 secondi.

Cronologia delle sessioni attive PostgreSQL: nuova estensione pgsentinel

Fonte: habr.com

Aggiungi un commento