Skip to content

Commit 3e585c4

Browse files
authored
Merge pull request #809 from sysadmind/stat_database_refactor
Fix pg_stat_database collector
2 parents 4d41f89 + fe48601 commit 3e585c4

File tree

1 file changed

+58
-60
lines changed

1 file changed

+58
-60
lines changed

collector/pg_stat_database.go

+58-60
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"context"
1818
"database/sql"
1919

20-
"github.com/go-kit/log"
2120
"github.com/prometheus/client_golang/prometheus"
2221
)
2322

@@ -27,14 +26,14 @@ func init() {
2726

2827
type PGStatDatabaseCollector struct{}
2928

30-
func NewPGStatDatabaseCollector(logger log.Logger) (Collector, error) {
29+
func NewPGStatDatabaseCollector(config collectorConfig) (Collector, error) {
3130
return &PGStatDatabaseCollector{}, nil
3231
}
3332

3433
const statDatabaseSubsystem = "stat_database"
3534

36-
var statDatabase = map[string]*prometheus.Desc{
37-
"numbackends": prometheus.NewDesc(
35+
var (
36+
statDatabaseNumbackends = prometheus.NewDesc(
3837
prometheus.BuildFQName(
3938
namespace,
4039
statDatabaseSubsystem,
@@ -43,8 +42,8 @@ var statDatabase = map[string]*prometheus.Desc{
4342
"Number of backends currently connected to this database. This is the only column in this view that returns a value reflecting current state; all other columns return the accumulated values since the last reset.",
4443
[]string{"datid", "datname"},
4544
prometheus.Labels{},
46-
),
47-
"xact_commit": prometheus.NewDesc(
45+
)
46+
statDatabaseXactCommit = prometheus.NewDesc(
4847
prometheus.BuildFQName(
4948
namespace,
5049
statDatabaseSubsystem,
@@ -53,8 +52,8 @@ var statDatabase = map[string]*prometheus.Desc{
5352
"Number of transactions in this database that have been committed",
5453
[]string{"datid", "datname"},
5554
prometheus.Labels{},
56-
),
57-
"xact_rollback": prometheus.NewDesc(
55+
)
56+
statDatabaseXactRollback = prometheus.NewDesc(
5857
prometheus.BuildFQName(
5958
namespace,
6059
statDatabaseSubsystem,
@@ -63,8 +62,8 @@ var statDatabase = map[string]*prometheus.Desc{
6362
"Number of transactions in this database that have been rolled back",
6463
[]string{"datid", "datname"},
6564
prometheus.Labels{},
66-
),
67-
"blks_read": prometheus.NewDesc(
65+
)
66+
statDatabaseBlksRead = prometheus.NewDesc(
6867
prometheus.BuildFQName(
6968
namespace,
7069
statDatabaseSubsystem,
@@ -73,8 +72,8 @@ var statDatabase = map[string]*prometheus.Desc{
7372
"Number of disk blocks read in this database",
7473
[]string{"datid", "datname"},
7574
prometheus.Labels{},
76-
),
77-
"blks_hit": prometheus.NewDesc(
75+
)
76+
statDatabaseBlksHit = prometheus.NewDesc(
7877
prometheus.BuildFQName(
7978
namespace,
8079
statDatabaseSubsystem,
@@ -83,8 +82,8 @@ var statDatabase = map[string]*prometheus.Desc{
8382
"Number of times disk blocks were found already in the buffer cache, so that a read was not necessary (this only includes hits in the PostgreSQL buffer cache, not the operating system's file system cache)",
8483
[]string{"datid", "datname"},
8584
prometheus.Labels{},
86-
),
87-
"tup_returned": prometheus.NewDesc(
85+
)
86+
statDatabaseTupReturned = prometheus.NewDesc(
8887
prometheus.BuildFQName(
8988
namespace,
9089
statDatabaseSubsystem,
@@ -93,8 +92,8 @@ var statDatabase = map[string]*prometheus.Desc{
9392
"Number of rows returned by queries in this database",
9493
[]string{"datid", "datname"},
9594
prometheus.Labels{},
96-
),
97-
"tup_fetched": prometheus.NewDesc(
95+
)
96+
statDatabaseTupFetched = prometheus.NewDesc(
9897
prometheus.BuildFQName(
9998
namespace,
10099
statDatabaseSubsystem,
@@ -103,8 +102,8 @@ var statDatabase = map[string]*prometheus.Desc{
103102
"Number of rows fetched by queries in this database",
104103
[]string{"datid", "datname"},
105104
prometheus.Labels{},
106-
),
107-
"tup_inserted": prometheus.NewDesc(
105+
)
106+
statDatabaseTupInserted = prometheus.NewDesc(
108107
prometheus.BuildFQName(
109108
namespace,
110109
statDatabaseSubsystem,
@@ -113,8 +112,8 @@ var statDatabase = map[string]*prometheus.Desc{
113112
"Number of rows inserted by queries in this database",
114113
[]string{"datid", "datname"},
115114
prometheus.Labels{},
116-
),
117-
"tup_updated": prometheus.NewDesc(
115+
)
116+
statDatabaseTupUpdated = prometheus.NewDesc(
118117
prometheus.BuildFQName(
119118
namespace,
120119
statDatabaseSubsystem,
@@ -123,8 +122,8 @@ var statDatabase = map[string]*prometheus.Desc{
123122
"Number of rows updated by queries in this database",
124123
[]string{"datid", "datname"},
125124
prometheus.Labels{},
126-
),
127-
"tup_deleted": prometheus.NewDesc(
125+
)
126+
statDatabaseTupDeleted = prometheus.NewDesc(
128127
prometheus.BuildFQName(
129128
namespace,
130129
statDatabaseSubsystem,
@@ -133,8 +132,8 @@ var statDatabase = map[string]*prometheus.Desc{
133132
"Number of rows deleted by queries in this database",
134133
[]string{"datid", "datname"},
135134
prometheus.Labels{},
136-
),
137-
"conflicts": prometheus.NewDesc(
135+
)
136+
statDatabaseConflicts = prometheus.NewDesc(
138137
prometheus.BuildFQName(
139138
namespace,
140139
statDatabaseSubsystem,
@@ -143,8 +142,8 @@ var statDatabase = map[string]*prometheus.Desc{
143142
"Number of queries canceled due to conflicts with recovery in this database. (Conflicts occur only on standby servers; see pg_stat_database_conflicts for details.)",
144143
[]string{"datid", "datname"},
145144
prometheus.Labels{},
146-
),
147-
"temp_files": prometheus.NewDesc(
145+
)
146+
statDatabaseTempFiles = prometheus.NewDesc(
148147
prometheus.BuildFQName(
149148
namespace,
150149
statDatabaseSubsystem,
@@ -153,8 +152,8 @@ var statDatabase = map[string]*prometheus.Desc{
153152
"Number of temporary files created by queries in this database. All temporary files are counted, regardless of why the temporary file was created (e.g., sorting or hashing), and regardless of the log_temp_files setting.",
154153
[]string{"datid", "datname"},
155154
prometheus.Labels{},
156-
),
157-
"temp_bytes": prometheus.NewDesc(
155+
)
156+
statDatabaseTempBytes = prometheus.NewDesc(
158157
prometheus.BuildFQName(
159158
namespace,
160159
statDatabaseSubsystem,
@@ -163,8 +162,8 @@ var statDatabase = map[string]*prometheus.Desc{
163162
"Total amount of data written to temporary files by queries in this database. All temporary files are counted, regardless of why the temporary file was created, and regardless of the log_temp_files setting.",
164163
[]string{"datid", "datname"},
165164
prometheus.Labels{},
166-
),
167-
"deadlocks": prometheus.NewDesc(
165+
)
166+
statDatabaseDeadlocks = prometheus.NewDesc(
168167
prometheus.BuildFQName(
169168
namespace,
170169
statDatabaseSubsystem,
@@ -173,8 +172,8 @@ var statDatabase = map[string]*prometheus.Desc{
173172
"Number of deadlocks detected in this database",
174173
[]string{"datid", "datname"},
175174
prometheus.Labels{},
176-
),
177-
"blk_read_time": prometheus.NewDesc(
175+
)
176+
statDatabaseBlkReadTime = prometheus.NewDesc(
178177
prometheus.BuildFQName(
179178
namespace,
180179
statDatabaseSubsystem,
@@ -183,8 +182,8 @@ var statDatabase = map[string]*prometheus.Desc{
183182
"Time spent reading data file blocks by backends in this database, in milliseconds",
184183
[]string{"datid", "datname"},
185184
prometheus.Labels{},
186-
),
187-
"blk_write_time": prometheus.NewDesc(
185+
)
186+
statDatabaseBlkWriteTime = prometheus.NewDesc(
188187
prometheus.BuildFQName(
189188
namespace,
190189
statDatabaseSubsystem,
@@ -193,18 +192,17 @@ var statDatabase = map[string]*prometheus.Desc{
193192
"Time spent writing data file blocks by backends in this database, in milliseconds",
194193
[]string{"datid", "datname"},
195194
prometheus.Labels{},
195+
)
196+
statDatabaseStatsReset = prometheus.NewDesc(prometheus.BuildFQName(
197+
namespace,
198+
statDatabaseSubsystem,
199+
"stats_reset",
196200
),
197-
"stats_reset": prometheus.NewDesc(
198-
prometheus.BuildFQName(
199-
namespace,
200-
statDatabaseSubsystem,
201-
"stats_reset",
202-
),
203201
"Time at which these statistics were last reset",
204202
[]string{"datid", "datname"},
205203
prometheus.Labels{},
206-
),
207-
}
204+
)
205+
)
208206

209207
func (PGStatDatabaseCollector) Update(ctx context.Context, db *sql.DB, ch chan<- prometheus.Metric) error {
210208
rows, err := db.QueryContext(ctx,
@@ -283,127 +281,127 @@ func (PGStatDatabaseCollector) Update(ctx context.Context, db *sql.DB, ch chan<-
283281
}
284282

285283
ch <- prometheus.MustNewConstMetric(
286-
statDatabase["numbackends"],
284+
statDatabaseNumbackends,
287285
prometheus.GaugeValue,
288286
numBackends,
289287
datid,
290288
datname,
291289
)
292290

293291
ch <- prometheus.MustNewConstMetric(
294-
statDatabase["xact_commit"],
292+
statDatabaseXactCommit,
295293
prometheus.CounterValue,
296294
xactCommit,
297295
datid,
298296
datname,
299297
)
300298

301299
ch <- prometheus.MustNewConstMetric(
302-
statDatabase["xact_rollback"],
300+
statDatabaseXactRollback,
303301
prometheus.CounterValue,
304302
xactRollback,
305303
datid,
306304
datname,
307305
)
308306

309307
ch <- prometheus.MustNewConstMetric(
310-
statDatabase["blks_read"],
308+
statDatabaseBlksRead,
311309
prometheus.CounterValue,
312310
blksRead,
313311
datid,
314312
datname,
315313
)
316314

317315
ch <- prometheus.MustNewConstMetric(
318-
statDatabase["blks_hit"],
316+
statDatabaseBlksHit,
319317
prometheus.CounterValue,
320318
blksHit,
321319
datid,
322320
datname,
323321
)
324322

325323
ch <- prometheus.MustNewConstMetric(
326-
statDatabase["tup_returned"],
324+
statDatabaseTupReturned,
327325
prometheus.CounterValue,
328326
tupReturned,
329327
datid,
330328
datname,
331329
)
332330

333331
ch <- prometheus.MustNewConstMetric(
334-
statDatabase["tup_fetched"],
332+
statDatabaseTupFetched,
335333
prometheus.CounterValue,
336334
tupFetched,
337335
datid,
338336
datname,
339337
)
340338

341339
ch <- prometheus.MustNewConstMetric(
342-
statDatabase["tup_inserted"],
340+
statDatabaseTupInserted,
343341
prometheus.CounterValue,
344342
tupInserted,
345343
datid,
346344
datname,
347345
)
348346

349347
ch <- prometheus.MustNewConstMetric(
350-
statDatabase["tup_updated"],
348+
statDatabaseTupUpdated,
351349
prometheus.CounterValue,
352350
tupUpdated,
353351
datid,
354352
datname,
355353
)
356354

357355
ch <- prometheus.MustNewConstMetric(
358-
statDatabase["tup_deleted"],
356+
statDatabaseTupDeleted,
359357
prometheus.CounterValue,
360358
tupDeleted,
361359
datid,
362360
datname,
363361
)
364362

365363
ch <- prometheus.MustNewConstMetric(
366-
statDatabase["conflicts"],
364+
statDatabaseConflicts,
367365
prometheus.CounterValue,
368366
conflicts,
369367
datid,
370368
datname,
371369
)
372370

373371
ch <- prometheus.MustNewConstMetric(
374-
statDatabase["temp_files"],
372+
statDatabaseTempFiles,
375373
prometheus.CounterValue,
376374
tempFiles,
377375
datid,
378376
datname,
379377
)
380378

381379
ch <- prometheus.MustNewConstMetric(
382-
statDatabase["temp_bytes"],
380+
statDatabaseTempBytes,
383381
prometheus.CounterValue,
384382
tempBytes,
385383
datid,
386384
datname,
387385
)
388386

389387
ch <- prometheus.MustNewConstMetric(
390-
statDatabase["deadlocks"],
388+
statDatabaseDeadlocks,
391389
prometheus.CounterValue,
392390
deadlocks,
393391
datid,
394392
datname,
395393
)
396394

397395
ch <- prometheus.MustNewConstMetric(
398-
statDatabase["blk_read_time"],
396+
statDatabaseBlkReadTime,
399397
prometheus.CounterValue,
400398
blkReadTime,
401399
datid,
402400
datname,
403401
)
404402

405403
ch <- prometheus.MustNewConstMetric(
406-
statDatabase["blk_write_time"],
404+
statDatabaseBlkWriteTime,
407405
prometheus.CounterValue,
408406
blkWriteTime,
409407
datid,
@@ -412,15 +410,15 @@ func (PGStatDatabaseCollector) Update(ctx context.Context, db *sql.DB, ch chan<-
412410

413411
if statsReset.Valid {
414412
ch <- prometheus.MustNewConstMetric(
415-
statDatabase["stats_reset"],
413+
statDatabaseStatsReset,
416414
prometheus.CounterValue,
417415
float64(statsReset.Time.Unix()),
418416
datid,
419417
datname,
420418
)
421419
} else {
422420
ch <- prometheus.MustNewConstMetric(
423-
statDatabase["stats_reset"],
421+
statDatabaseStatsReset,
424422
prometheus.CounterValue,
425423
0,
426424
datid,

0 commit comments

Comments
 (0)