Postgres incluye un subsistema de recolección de estadísticas que permite obtener información acerca de la actividad del servidor. Este recolector contabiliza accesos a tablas e índices a nivel de bloques en disco y filas. También conoce la cantidad de filas de cada tabla, número de llamadas a funciones definidas por el usuario, y tiempo transcurrido en cada una de ellas. Por otro lado permite conocer exactamente qué comando está siendo ejecutado por cada proceso, qué conexiones existen actualmente y más. Este artículo explica cómo obtener estadísticas de actividad de un servidor PostgreSQL desde línea de comandos utilizando el cliente psql
.
Toda la información recolectada por el subsistema de recolección de estadísticas es accesible a través de un número de vistas que comienzan con el prefijo pg_stat_
. Algunas son estadísticas dinámicas, mientras que otras son recolectadas.
Es posible encontrar información acerca de todas las vistas disponibles en el siguiente enlace: PostgreSQL Documentation - The Statistics Collector
La vista pg_stat_activity
muestra información sobre todos los procesos en ejecución, incluyendo la consulta SQL en ejecución (columna query
):
postgres=# SELECT usename,application_name,state FROM pg_stat_activity; usename | application_name | state ----------+--------------------------+-------- | | postgres | | collectd | collectd_postgresql | idle postgres | psql | active wwwusr | | idle wwwusr | | idle wwwusr | | idle wwwusr | | idle wwwusr | | idle wwwusr | app - 127.0.0.1:41794 | idle wwwusr | | idle wwwusr | | idle collectd | collectd_postgresql | idle wwwusr | | idle admin | pgAdmin 4 - DB:www | idle admin | pgAdmin 4 - CONN:2908722 | idle admin | pgAdmin 4 - CONN:4016342 | idle wwwusr | | idle | | | | | | (21 rows)
La vista pg_stat_ssl
muestra información acerca de las conexiones SSL, incluyendo la suite de cifrado utilizada en cada conexión hacia el servidor:
postgres=# SELECT pid,ssl,version,cipher,bits,compression FROM pg_stat_ssl; pid | ssl | version | cipher | bits | compression -------+-----+---------+-----------------------------+------+------------- 2752 | f | | | | 2754 | f | | | | 2825 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 18072 | f | | | | 18008 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 18009 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 18118 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 17656 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 17684 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 17700 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 22758 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 17839 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 18076 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 16815 | t | TLSv1.2 | ECDHE-RSA-AES128-GCM-SHA256 | 128 | f 18117 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 18119 | t | TLSv1.2 | ECDHE-RSA-CHACHA20-POLY1305 | 256 | f 2750 | f | | | | 2749 | f | | | | 2751 | f | | | | (19 rows)
La vista pg_stat_progress_vacuum
muestra el progreso de ejecución de cada proceso de VACUUM
en ejecución.
La vista pg_stat_database
mantiene contadores por base de datos:
postgres=# select datname,tup_returned,tup_fetched,tup_inserted,tup_updated,tup_deleted from pg_stat_database; datname | tup_returned | tup_fetched | tup_inserted | tup_updated | tup_deleted -----------+--------------+--------------+--------------+-------------+------------- postgres | 377932075 | 6391263 | 30284 | 80604 | 26868 template0 | 0 | 0 | 0 | 0 | 0 template1 | 373347561 | 6713388 | 30284 | 80601 | 26868 www | 986173149846 | 107819649288 | 249617339 | 100518362 | 119985707 (4 rows)
pg_stat_all_tables
mantiene información similar para cada tabla de la base de datos actual.
Otras vistas con prefijo pg_statio_
muestran estadísticas sobre índices, secuencias y funciones.
Para más información y detalle de columnas de cada vista, consultar la documentaciñon oficial de PostgreSQL; PostgreSQL Documentation - The Statistics Collector