Active session history in PostgreSQL - new pgsentinel extension

Empresa pgsentinel lançou a extensão homônima pgsentinel (repositório github), 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:

  1. 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.
  2. Adiciona-se o campo queryid — o mesmo queryid da extensão pg_stat_statements (requer instalação prévia).
  3. 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 PASH-Viewer (os binários compilados podem ser baixados na seção Releases).

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.

Active session history in PostgreSQL - new pgsentinel extension

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster