diff --git a/collector/models/PgStatCheckpointer.go b/collector/models/PgStatCheckpointer.go index d8dc784..73cbcf5 100644 --- a/collector/models/PgStatCheckpointer.go +++ b/collector/models/PgStatCheckpointer.go @@ -1,21 +1,21 @@ package models import ( - "time" + "time" - "github.com/uptrace/bun" + "github.com/uptrace/bun" ) // +metric=row type PgStatCheckpointer struct { - bun.BaseModel `bun:"pg_stat_checkpointer"` - NumTimed int64 `bun:"num_timed" help:"Number of Checkpoints timed" metric:"num_timed_total"` - NumRequested int64 `bun:"num_requested" help:"Number of Checkpoints requested:"num_requested_total"` - RestartpointsTimed int64 `bun:"restartpoints_timed" help:"Number of Restart Points timed" metric:"restartpoints_timed_total"` - RestartpointsReq int64 `bun:"restartpoints_req" help:"Number of Restart Points requested" metric:"restartpoints_req_total"` - RestartpointsDone int64 `bun:"restartpoints_done" help:"Number of Restart Points done" metric:"restartpoints_done_total"` - CkpWriteTime float64 `bun:"write_time" help: "Checkpoint write Time" metric:"ckp_write_time_total"` - CkpSyncTime float64 `bun:"sync_time" help: "Checkpoint sync Time" metric:"ckp_sync_time_total"` - BuffersWritten int64 `bun:"buffers_written" help: "Checkpoint Buffers written" metric:"ckp_buffers_written_total"` - StatsReset time.Time `bun:"stats_reset" help:"Time at which these statistics were last reset"` + bun.BaseModel `bun:"pg_stat_checkpointer"` + NumTimed int64 `bun:"num_timed" help:"Number of Checkpoints timed" metric:"num_timed_total"` + NumRequested int64 `bun:"num_requested" help:"Number of Checkpoints requested" metric:"num_requested_total"` + RestartpointsTimed int64 `bun:"restartpoints_timed" help:"Number of Restart Points timed" metric:"restartpoints_timed_total"` + RestartpointsReq int64 `bun:"restartpoints_req" help:"Number of Restart Points requested" metric:"restartpoints_req_total"` + RestartpointsDone int64 `bun:"restartpoints_done" help:"Number of Restart Points done" metric:"restartpoints_done_total"` + CkpWriteTime float64 `bun:"write_time" help:"Checkpoint write Time" metric:"ckp_write_time_total"` + CkpSyncTime float64 `bun:"sync_time" help:"Checkpoint sync Time" metric:"ckp_sync_time_total"` + BuffersWritten int64 `bun:"buffers_written" help:"Checkpoint Buffers written" metric:"ckp_buffers_written_total"` + StatsReset time.Time `bun:"stats_reset" help:"Time at which these statistics were last reset"` } diff --git a/collector/models/pgStatCheckpointer_gen.go b/collector/models/pgStatCheckpointer_gen.go new file mode 100644 index 0000000..150b7c6 --- /dev/null +++ b/collector/models/pgStatCheckpointer_gen.go @@ -0,0 +1,95 @@ +/*generated by binding gen*/ +package models + +import ( + "github.com/prometheus/client_golang/prometheus" +) + +func (r *PgStatCheckpointer) ToMetrics(namespace string, subsystem string, ch chan<- prometheus.Metric, labelsKV ...string) error { + labels := newLabels(labelsKV...) + // labels + + // optional labels + + // metrics + // num_timed_total (CounterValue) + numTimedTotal := float64(r.NumTimed) + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, `num_timed_total`), `Number of Checkpoints timed`, nil, labels, + ), prometheus.CounterValue, numTimedTotal, + ) + + // num_requested_total (CounterValue) + numRequestedTotal := float64(r.NumRequested) + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, `num_requested_total`), `Number of Checkpoints requested`, nil, labels, + ), prometheus.CounterValue, numRequestedTotal, + ) + + // restartpoints_timed_total (CounterValue) + restartpointsTimedTotal := float64(r.RestartpointsTimed) + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, `restartpoints_timed_total`), `Number of Restart Points timed`, nil, labels, + ), prometheus.CounterValue, restartpointsTimedTotal, + ) + + // restartpoints_req_total (CounterValue) + restartpointsReqTotal := float64(r.RestartpointsReq) + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, `restartpoints_req_total`), `Number of Restart Points requested`, nil, labels, + ), prometheus.CounterValue, restartpointsReqTotal, + ) + + // restartpoints_done_total (CounterValue) + restartpointsDoneTotal := float64(r.RestartpointsDone) + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, `restartpoints_done_total`), `Number of Restart Points done`, nil, labels, + ), prometheus.CounterValue, restartpointsDoneTotal, + ) + + // ckp_write_time_total (CounterValue) + + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, `ckp_write_time_total`), `Checkpoint write Time`, nil, labels, + ), prometheus.CounterValue, r.CkpWriteTime, + ) + + // ckp_sync_time_total (CounterValue) + + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, `ckp_sync_time_total`), `Checkpoint sync Time`, nil, labels, + ), prometheus.CounterValue, r.CkpSyncTime, + ) + + // ckp_buffers_written_total (CounterValue) + ckpBuffersWrittenTotal := float64(r.BuffersWritten) + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, `ckp_buffers_written_total`), `Checkpoint Buffers written`, nil, labels, + ), prometheus.CounterValue, ckpBuffersWrittenTotal, + ) + + // stats_reset (CounterValue) + var statsReset float64 + if r.StatsReset.IsZero() { + statsReset = float64(0) + } else { + statsReset = float64(r.StatsReset.Unix()) + } + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, `stats_reset`), `Time at which these statistics were last reset`, nil, labels, + ), prometheus.CounterValue, statsReset, + ) + + // optional metrics + + return nil +} diff --git a/pg_exporter.go b/pg_exporter.go index 7895c22..ac91267 100644 --- a/pg_exporter.go +++ b/pg_exporter.go @@ -57,6 +57,7 @@ var scrapers = map[collector.Scraper]bool{ collector.ScrapeIOTables{}: true, collector.ScrapeWal{}: true, collector.ScrapeFrozenXid{}: true, + collector.ScrapeCheckpointer{}: true, collector.ScrapeStatements{}: false, }