Empresa lançou a extensão homônima pgsentinel (), que adiciona ao PostgreSQL a visualização pg_active_session_history — o histórico de sessões ativas (semelhante ao v$active_session_history do Oracle).
Essencialmente, trata-se de capturas a cada segundo do pg_stat_activity, mas há pontos importantes:
- Todas as informações acumuladas são armazenadas apenas na memória RAM, e o volume de memória consumido é regulado pela quantidade de registros armazenados mais recentemente.
- Adiciona-se o campo queryid — o mesmo queryid da extensão pg_stat_statements (requer instalação prévia).
- Adiciona-se o campo top_level_query — o texto da consulta que originou a consulta atual (no caso de uso do pl/pgsql)
Lista completa dos campos do pg_active_session_history:
Coluna | Tipo
------------------+--------------------------
ash_time | timestamp com fuso horário
datid | oid
datname | texto
pid | inteiro
usesysid | oid
usename | texto
application_name | texto
client_addr | texto
client_hostname | texto
client_port | inteiro
backend_start | timestamp com fuso horário
xact_start | timestamp com fuso horário
query_start | timestamp com fuso horário
state_change | timestamp com fuso horário
wait_event_type | texto
wait_event | texto
state | texto
backend_xid | xid
backend_xmin | xid
top_level_query | texto
query | texto
queryid | bigint
backend_type | texto
Ainda não há um pacote pronto para instalação. Recomenda-se baixar os arquivos-fonte e compilar a biblioteca manualmente. Primeiramente, é necessário instalar o pacote "devel" para seu servidor e adicionar o caminho do pg_config na variável PATH. Compilando:
cd pgsentinel/src
make
make install
Adicione os parâmetros ao postgres.conf:
shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Reinicie o PostgreSQL e crie a extensão:
create extension pgsentinel;
As informações acumuladas permitem responder a perguntas como:
- Em quais esperas as sessões gastaram mais tempo?
- Quais sessões foram mais ativas?
- Quais consultas foram as mais ativas?
É possível obter respostas a essas perguntas, claro, com consultas SQL, mas é mais conveniente visualizar isso graficamente, destacando com o mouse os intervalos de tempo desejados. Você pode fazer isso com o programa gratuito (os binários compilados podem ser baixados na seção ).
Ao iniciar o PASH-Viewer (a partir da versão 0.4.0), ele verifica a existência da visão pg_active_session_history e, se estiver presente, carrega todo o histórico acumulado e continua lendo os novos dados que chegam, atualizando o gráfico a cada 15 segundos.

Fonte: habr.com
