El historial de sesiones activas en PostgreSQL — nueva extensión pgsentinel

Empresa pgsentinel lanzó la extensión homónima pgsentinel (repositorio de github), que añade a PostgreSQL la vista pg_active_session_history — el historial de sesiones activas (similar a la v$active_session_history de Oracle).

En esencia, son simplemente capturas por segundo de pg_stat_activity, pero hay puntos importantes:

  1. Toda la información acumulada se almacena solo en la memoria RAM, y el volumen de memoria consumido se regula por la cantidad de últimos registros almacenados.
  2. Se añade el campo queryid — el mismo queryid de la extensión pg_stat_statements (se requiere instalación previa).
  3. Se añade el campo top_level_query — el texto de la consulta desde la que se invocó la consulta actual (en caso de usar pl/plpgsql)


Lista completa de campos de pg_active_session_history:

      Columna      |           Tipo           
------------------+--------------------------
 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                     

Aún no hay un paquete listo para la instalación. Se sugiere descargar el código fuente y compilar la biblioteca por cuenta propia. Se requiere instalar el paquete 'devel' para su servidor y añadir la ruta a pg_config a la variable PATH. Compilamos:

cd pgsentinel/src
make
make install

Añadimos parámetros en postgres.conf:

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

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

Reiniciamos PostgreSQL y creamos la extensión:

create extension pgsentinel;

La información acumulada permite responder preguntas como:

  • ¿En qué esperas las sesiones pasaron más tiempo?
  • ¿Qué sesiones fueron las más activas?
  • ¿Qué consultas fueron las más activas?

Se pueden obtener respuestas a estas preguntas, por supuesto, con consultas SQL, pero es más conveniente verlas visualmente en un gráfico, resaltando con el ratón los intervalos de tiempo de interés. Puedes hacer esto con el programa gratuito PASH-Viewer (los binarios compilados se pueden descargar en la sección Releases).

Al iniciar PASH-Viewer (a partir de la versión 0.4.0), verifica la existencia de la vista pg_active_session_history y, si está disponible, carga toda la historia acumulada y continúa leyendo los nuevos datos entrantes, actualizando el gráfico cada 15 segundos.

El historial de sesiones activas en PostgreSQL — nueva extensión pgsentinel

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster