Add pg_stat_io query

* Add a query for pg_stat_io metrics grouped by backend type

* Switch some unsupported values from 0 to NULL to better reflect their
  nonexistence
This commit is contained in:
James Campbell 2025-06-28 00:30:03 -04:00
parent ea397ef889
commit b934a30124
Signed by: james
GPG Key ID: 2287C33A40DC906A

View File

@ -49,7 +49,7 @@ metrics:
query:
0: >
SELECT max(age(datfrozenxid)) AS xid_age,
0 AS mxid_age
NULL AS mxid_age
FROM pg_database
90600: >
SELECT max(age(datfrozenxid)) AS xid_age,
@ -86,6 +86,28 @@ metrics:
CROSS JOIN pg_stat_checkpointer cp
io_per_backend:
type: set
query:
160000: >
SELECT backend_type,
COALESCE(SUM(reads), 0) AS reads,
COALESCE(SUM(read_time), 0) AS read_time,
COALESCE(SUM(writes), 0) AS writes,
COALESCE(SUM(write_time), 0) AS write_time,
COALESCE(SUM(writebacks), 0) AS writebacks,
COALESCE(SUM(writeback_time), 0) AS writeback_time,
COALESCE(SUM(extends), 0) AS extends,
COALESCE(SUM(extend_time), 0) AS extend_time,
COALESCE(SUM(op_bytes), 0) AS op_bytes,
COALESCE(SUM(hits), 0) AS hits,
COALESCE(SUM(evictions), 0) AS evictions,
COALESCE(SUM(reuses), 0) AS reuses,
COALESCE(SUM(fsyncs), 0) AS fsyncs,
COALESCE(SUM(fsync_time), 0) AS fsync_time
FROM pg_stat_io
GROUP BY backend_type
##
# Per-database metrics
##
@ -107,16 +129,16 @@ metrics:
temp_files,
temp_bytes,
deadlocks,
0 AS checksum_failures,
NULL AS checksum_failures,
blk_read_time,
blk_write_time,
0 AS session_time,
0 AS active_time,
0 AS idle_in_transaction_time,
0 AS sessions,
0 AS sessions_abandoned,
0 AS sessions_fatal,
0 AS sessions_killed,
NULL AS session_time,
NULL AS active_time,
NULL AS idle_in_transaction_time,
NULL AS sessions,
NULL AS sessions_abandoned,
NULL AS sessions_fatal,
NULL AS sessions_killed,
extract('epoch' from stats_reset)::float AS stats_reset
FROM pg_stat_database WHERE datname = %(dbname)s
140000: >
@ -134,8 +156,7 @@ metrics:
temp_files,
temp_bytes,
deadlocks,
COALESCE(checksum_failures,
0) AS checksum_failures,
COALESCE(checksum_failures, 0) AS checksum_failures,
blk_read_time,
blk_write_time,
session_time,