Historique des sessions actives dans PostgreSQL - nouvelle extension pgsentinel

Société pgsentinel a lancé une extension homonyme pgsentinel (dépôt github), ajoutant à PostgreSQL la vue pg_active_session_history — l'historique des sessions actives (similaire à la v$active_session_history d'Oracle).

En réalité, ce sont simplement des instantanés par seconde de pg_stat_activity, mais il y a des points importants :

  1. Toutes les informations accumulées ne sont stockées qu'en mémoire vive, et le volume de mémoire consommé est régulé par le nombre des dernières entrées stockées.
  2. Un champ queryid est ajouté — ce fameux queryid de l'extension pg_stat_statements (installation préalable requise).
  3. Un champ top_level_query est ajouté — le texte de la requête à partir de laquelle la requête actuelle a été appelée (en cas d'utilisation de pl/pgsql)


Liste complète des champs de pg_active_session_history :

      Column      |           Type           
------------------+--------------------------
 ash_time         | timestamp with time zone 
 datid            | oid                      
 datname          | text                     
 pid              | integer                  
 usesysid         | oid                      
 usename          | text                     
 application_name | text                     
 client_addr      | text                     
 client_hostname  | text                     
 client_port      | integer                  
 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  | text                     
 wait_event       | text                     
 state            | text                     
 backend_xid      | xid                      
 backend_xmin     | xid                      
 top_level_query  | text                     
 query            | text                     
 queryid          | bigint                   
 backend_type     | text                     

Il n'y a pas encore de paquet prêt à être installé. Il est suggéré de télécharger les sources et de compiler la bibliothèque soi-même. L'installation d'un paquet 'devel' pour votre serveur et l'ajout du chemin vers pg_config dans la variable PATH sont requises. Compilation :

cd pgsentinel/src
make
make install

Ajoutez les paramètres dans postgres.conf :

shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all

# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000

Redémarrez PostgreSQL et créez l'extension :

create extension pgsentinel;

Les informations accumulées permettent de répondre à des questions telles que :

  • Sur quelles attentes de session a-t-on passé le plus de temps ?
  • Quelles sessions ont été les plus actives ?
  • Quelles requêtes ont été les plus actives ?

Bien sûr, on peut obtenir des réponses à ces questions à l'aide de requêtes SQL, mais il est plus simple de les visualiser sur un graphique en sélectionnant avec la souris les intervalles de temps qui vous intéressent. Vous pouvez le faire avec le logiciel gratuit PASH-Viewer (les binaires compilés peuvent être téléchargés dans la section Releases).

Lorsque vous démarrez PASH-Viewer (à partir de la version 0.4.0), il vérifie l'existence de la vue pg_active_session_history et, si elle est présente, il charge toute l'historique accumulé et continue de lire les nouvelles données entrantes, mettant à jour le graphique toutes les 15 secondes.

Historique des sessions actives dans PostgreSQL - nouvelle extension pgsentinel

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster