Історія активних сесій у PostgreSQL - нове розширення pgsentinel

Компанія pgsentinel випустила однойменне розширення pgsentinel (репозиторій github), що додає в PostgreSQL уявлення pg_active_session_history - історію активних сесій (за аналогією з ораклової v $ active_session_history).

По суті, це щосекундні знімки з pg_stat_activity, але є важливі моменти:

  1. Вся накопичена інформація зберігається тільки в оперативній пам'яті, а обсяг пам'яті, що споживається, регулюється кількістю останніх записів, що зберігаються.
  2. Додається поле queryid - цей queryid з розширення pg_stat_statements (потрібна попередня установка).
  3. Додається поле top_level_query — текст запиту, з якого викликано поточний запит (у разі використання pl/pgsql)


Повний список полів pg_active_session_history:

      Column | Type ------------------+-------------------------- 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                     

Готового пакета для встановлення поки що немає. Пропонується завантажити вихідні записи та зібрати бібліотеку самостійно. Попередньо потрібно встановити "devel"-пакет для свого сервера та в змінну PATH прописати шлях до pg_config. Збираємо:

cd pgsentinel/src
зробити
зробити установку

Додаємо параметри до postgres.conf:

shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = all

кількість утримуваних у пам'яті останніх записів
pgsentinel_ash.max_entries = 10000

Перезавантажуємо PostgreSQL і створюємо розширення:

create extension pgsentinel;

Накопичена інформація дозволяє відповісти на такі питання, як:

  • На яких очікуваннях сесії провели найбільше часу?
  • Які сесії були найактивнішими?
  • Які запити були найактивнішими?

Отримати відповіді на ці питання можна, звичайно, SQL-запитами, але зручніше побачити це наочно на графіку, виділяючи мишкою інтервали часу, що цікавляться. Ви можете зробити це за допомогою безкоштовної програми PASH-Viewer (завантажити зібрані бінар можна в розділі Релізи).

При старті PASH-Viewer (починаючи з версії 0.4.0) перевіряє наявність уявлення pg_active_session_history і якщо воно є, то завантажує з нього всю накопичену історію і продовжує зчитувати нові дані, оновлюючи графік раз на 15 секунд.

Історія активних сесій у PostgreSQL - нове розширення pgsentinel

Джерело: habr.com

Додати коментар або відгук