Het bedrijf heeft de gelijknamige uitbreiding pgsentinel uitgebracht (), die aan PostgreSQL de weergave pg_active_session_history toevoegt — de geschiedenis van actieve sessies (vergelijkbaar met de Oracle v$active_session_history).
In wezen zijn dit gewoon momentopnamen van pg_stat_activity elke seconde, maar er zijn belangrijke punten:
- Alle verzamelde informatie wordt alleen in het RAM-geheugen opgeslagen, en de hoeveelheid gebruikte geheugen wordt geregeld door het aantal laatst opgeslagen records.
- Er wordt een veld queryid toegevoegd — diezelfde queryid van de uitbreiding pg_stat_statements (voorafgaande installatie vereist).
- Er wordt een veld top_level_query toegevoegd — de tekst van de query die de huidige query heeft aangeroepen (in het geval van gebruik van pl/pgsql)
Volledige lijst van velden pg_active_session_history:
Kolom | Type
------------------+--------------------------
ash_time | timestamp met tijdzone
datid | oid
datname | tekst
pid | integer
usesysid | oid
usename | tekst
application_name | tekst
client_addr | tekst
client_hostname | tekst
client_port | integer
backend_start | timestamp met tijdzone
xact_start | timestamp met tijdzone
query_start | timestamp met tijdzone
state_change | timestamp met tijdzone
wait_event_type | tekst
wait_event | tekst
state | tekst
backend_xid | xid
backend_xmin | xid
top_level_query | tekst
query | tekst
queryid | bigint
backend_type | tekst
Er is momenteel geen kant-en-klaar installatiepakket beschikbaar. Het wordt aanbevolen om de bronbestanden te downloaden en de bibliotheek zelf samen te stellen. Van tevoren moet het 'devel'-pakket voor uw server worden geïnstalleerd en moet het pad naar pg_config in de PATH-variabele worden toegevoegd. Samenstellen:
cd pgsentinel/src
make
make install
Voeg parameters toe in postgres.conf:
shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Herstart PostgreSQL en maak de uitbreiding aan:
create extension pgsentinel;
De verzamelde informatie stelt u in staat om de volgende vragen te beantwoorden:
- Op welke wachtperioden hebben sessies de meeste tijd doorgebracht?
- Welke sessies waren het meest actief?
- Welke queries waren het meest actief?
U kunt antwoorden op deze vragen krijgen door middel van SQL-queries, maar het is gemakkelijker om dit visueel weer te geven met een grafiek, waarbij u met de muis de gewenste tijdintervallen kunt selecteren. U kunt dit doen met behulp van het gratis programma (de verzamelde binaries kunnen worden gedownload in de sectie ).
Bij het starten van PASH-Viewer (vanaf versie 0.4.0) controleert het of de weergave pg_active_session_history aanwezig is. Als dit het geval is, laadt het alle opgeslagen geschiedenis en blijft het nieuwe gegevens lezen, waarbij de grafiek om de 15 seconden wordt bijgewerkt.

Bron: habr.com
