Histórico de sessões ativas do PostgreSQL - nova extensão pgsentinel

O Pgsentinel lançou a extensão pgsentinel com o mesmo nome ( repositório github ), que adiciona a visualização pg_active_session_history ao PostgreSQL, o histórico de sessões ativas (semelhante ao Oracle v $ active_session_history).

Na verdade, esses são simplesmente instantâneos a cada segundo de pg_stat_activity, mas existem pontos importantes:

  1. Todas as informações acumuladas são armazenadas apenas na RAM, e a quantidade consumida de memória é controlada pelo número de últimos registros armazenados.
  2. O campo queryid é adicionado - o mesmo queryid da extensão pg_stat_statements (é necessária uma instalação preliminar).
  3. O campo top_level_query é adicionado - o texto da consulta a partir do qual a consulta atual foi chamada (no caso de usar pl / pgsql)

Lista completa dos campos pg_active_session_history:
       Coluna |  Tipo ------------------ + -------------------------- ash_time |  timestamp com fuso horário datid |  oid datname |  texto pid |  número inteiro usesysid |  nome de usuário oid |  texto application_name |  texto client_addr |  texto client_hostname |  texto client_port |  número inteiro backend_start |  registro de data e hora com fuso horário xact_start |  registro de data e hora com fuso horário query_start |  registro de data e hora com fuso horário state_change |  registro de data e hora com fuso horário wait_event_type |  texto wait_event |  estado do texto |  texto backend_xid |  xid backend_xmin |  xid top_level_query |  consulta de texto |  texto queryid |  bigint backend_type |  texto 


Ainda não existe um pacote pronto para instalação. Propõe-se baixar as fontes e construir a biblioteca você mesmo. Primeiro, você precisa instalar o pacote “devel” no seu servidor e escrever o caminho para pg_config na variável PATH. Nós coletamos:
cd pgsentinel / src
fazer
faça instalar

Adicione parâmetros ao postgres.conf:
shared_preload_libraries = 'pg_stat_statements, pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = all

# número de entradas recentes mantidas na memória
pgsentinel_ash.max_entries = 10000

Reinicie o PostgreSQL e crie a extensão:
criar extensão pgsentinel;

As informações acumuladas permitem responder perguntas como:

  • Em quais expectativas as sessões passavam mais tempo?
  • Quais sessões foram mais ativas?
  • Quais consultas foram mais ativas?

Você pode obter respostas para essas perguntas, é claro, com consultas SQL, mas é mais conveniente ver isso claramente no gráfico, destacando os intervalos de tempo com o mouse. Você pode fazer isso usando o programa PASH-Viewer gratuito (você pode baixar os binários coletados na seção Versões ).

No início, o PASH-Viewer (a partir da versão 0.4.0) verifica a presença da visualização pg_active_session_history e, se houver, carrega todo o histórico acumulado e continua a ler novos dados recebidos, atualizando a programação a cada 15 segundos.

imagem

Source: https://habr.com/ru/post/pt416909/


All Articles