Empresa lanzó la extensión homónima pgsentinel (), 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:
- 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.
- Se añade el campo queryid — el mismo queryid de la extensión pg_stat_statements (se requiere instalación previa).
- 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 (los binarios compilados se pueden descargar en la sección ).
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.

Fuente: habr.com
