@@ -511,6 +511,10 @@ func (c *collector) collectCluster(o CollectConfig) {
511511 c .getProgressCopy ()
512512 }
513513
514+ if c .version >= pgv17 {
515+ c .getCheckpointer ()
516+ }
517+
514518 if ! arrayHas (o .Omit , "log" ) && c .local {
515519 c .getLogInfo ()
516520 }
@@ -2930,6 +2934,26 @@ func (c *collector) getProgressCreateIndex() {
29302934 c .result .CreateIndexProgress = out
29312935}
29322936
2937+ func (c * collector ) getCheckpointer () {
2938+ ctx , cancel := context .WithTimeout (context .Background (), c .timeout )
2939+ defer cancel ()
2940+
2941+ q := `SELECT num_timed, num_requested, restartpoints_timed,
2942+ restartpoints_req, restartpoints_done, write_time, sync_time,
2943+ buffers_written, COALESCE(EXTRACT(EPOCH FROM stats_reset)::bigint, 0)
2944+ FROM pg_stat_checkpointer`
2945+
2946+ var ckp pgmetrics.Checkpointer
2947+ err := c .db .QueryRowContext (ctx , q ).Scan (& ckp .NumTimed , & ckp .NumRequested ,
2948+ & ckp .RestartpointsTimed , & ckp .RestartpointsRequested , & ckp .RestartpointsDone ,
2949+ & ckp .WriteTime , & ckp .SyncTime , & ckp .BuffersWritten , & ckp .StatsReset )
2950+ if err != nil {
2951+ log .Fatalf ("pg_stat_checkpointer query failed: %v" , err )
2952+ }
2953+
2954+ c .result .Checkpointer = & ckp
2955+ }
2956+
29332957//------------------------------------------------------------------------------
29342958// PgBouncer
29352959
0 commit comments