pgsentinel
pgsentinel
pgsentinel : active session history
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 6410 | pgsentinel
|
pgsentinel
|
1.4.1 |
STAT
|
PostgreSQL
|
C
|
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
--sLd-r
|
No
|
Yes
|
Yes
|
Yes
|
yes
|
no
|
| Relationships | |
|---|---|
| See Also | system_stats
pgnodemx
pg_stat_monitor
pg_wait_sampling
bgw_replstatus
pg_profile
pg_proctab
powa
|
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | MIXED
|
1.4.1 |
18
17
16
15
14
|
pgsentinel |
- |
| RPM | PIGSTY
|
1.4.1 |
18
17
16
15
14
|
pgsentinel_$v |
- |
| DEB | PGDG
|
1.4.1 |
18
17
16
15
14
|
postgresql-$v-pgsentinel |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
el8.x86_64
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
el8.aarch64
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
el9.x86_64
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
el9.aarch64
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
el10.x86_64
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
el10.aarch64
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
PIGSTY 1.4.1
|
d12.x86_64
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
d12.aarch64
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
d13.x86_64
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
d13.aarch64
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
u22.x86_64
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
u22.aarch64
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
u24.x86_64
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
u24.aarch64
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
PGDG 1.4.1
|
Source
pig build pkg pgsentinel; # build rpm/debInstall
Make sure PGDG and PIGSTY repo available:
pig repo add pgsql -u # add both repo and update cacheInstall this extension with pig:
pig install pgsentinel; # install via package name, for the active PG version
pig install pgsentinel -v 18; # install for PG 18
pig install pgsentinel -v 17; # install for PG 17
pig install pgsentinel -v 16; # install for PG 16
pig install pgsentinel -v 15; # install for PG 15
pig install pgsentinel -v 14; # install for PG 14Config this extension to shared_preload_libraries:
shared_preload_libraries = 'pgsentinel';Create this extension with:
CREATE EXTENSION pgsentinel;Usage
pgsentinel records active session history by sampling pg_stat_activity at regular intervals and linking activity with pg_stat_statements query statistics.
Active Session History
SELECT ash_time, datname, usename, pid, state,
wait_event_type, wait_event, query, queryid
FROM pg_active_session_history
ORDER BY ash_time DESC;Key columns beyond pg_stat_activity:
| Column | Description |
|---|---|
ash_time |
Sampling timestamp |
top_level_query |
Top-level statement (for PL/pgSQL) |
query |
Statement with actual parameter values |
cmdtype |
Statement type: SELECT, UPDATE, INSERT, DELETE, UTILITY, UNKNOWN, NOTHING |
queryid |
Links to pg_stat_statements |
blockers |
Number of blocking processes |
blockerpid |
PID of a blocking process |
blocker_state |
State of the blocker |
Query Statistics History
When enabled, pgsentinel also samples pg_stat_statements concurrently:
SELECT ash_time, queryid, calls, total_exec_time, rows,
shared_blks_hit, shared_blks_read
FROM pg_stat_statements_history
ORDER BY ash_time DESC;Example: Wait Analysis
-- Top wait events in the last hour
SELECT wait_event_type, wait_event, count(*)
FROM pg_active_session_history
WHERE ash_time > now() - interval '1 hour'
AND wait_event IS NOT NULL
GROUP BY 1, 2
ORDER BY 3 DESC;
-- Blocking analysis
SELECT blockerpid, blocker_state, count(*)
FROM pg_active_session_history
WHERE blockers > 0
GROUP BY 1, 2
ORDER BY 3 DESC;Configuration
| Parameter | Default | Description |
|---|---|---|
pgsentinel_ash.sampling_period |
1 | Sampling period in seconds |
pgsentinel_ash.max_entries |
1000 | Ring buffer size for ASH |
pgsentinel.db_name |
postgres |
Database for worker connection |
pgsentinel_ash.track_idle_trans |
false |
Track idle-in-transaction sessions |
pgsentinel_pgssh.max_entries |
1000 | Ring buffer for pg_stat_statements history |
pgsentinel_pgssh.enable |
false |
Enable pg_stat_statements history |
Last updated on