Skip to content

Commit b3ed0b2

Browse files
authored
PMM-7 add missing labels for pg exporter (percona#75)
PMM-10717 Add bgwriter collector and missing label
1 parent 65766f8 commit b3ed0b2

File tree

2 files changed

+63
-22
lines changed

2 files changed

+63
-22
lines changed

cmd/postgres_exporter/postgres_exporter.go

+19
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,23 @@ func dumpMaps() {
161161
}
162162

163163
var builtinMetricMaps = map[string]intermediateMetricMap{
164+
"pg_stat_bgwriter": {
165+
map[string]ColumnMapping{
166+
"checkpoints_timed": {COUNTER, "Number of scheduled checkpoints that have been performed", nil, nil},
167+
"checkpoints_req": {COUNTER, "Number of requested checkpoints that have been performed", nil, nil},
168+
"checkpoint_write_time": {COUNTER, "Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk, in milliseconds", nil, nil},
169+
"checkpoint_sync_time": {COUNTER, "Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk, in milliseconds", nil, nil},
170+
"buffers_checkpoint": {COUNTER, "Number of buffers written during checkpoints", nil, nil},
171+
"buffers_clean": {COUNTER, "Number of buffers written by the background writer", nil, nil},
172+
"maxwritten_clean": {COUNTER, "Number of times the background writer stopped a cleaning scan because it had written too many buffers", nil, nil},
173+
"buffers_backend": {COUNTER, "Number of buffers written directly by a backend", nil, nil},
174+
"buffers_backend_fsync": {COUNTER, "Number of times a backend had to execute its own fsync call (normally the background writer handles those even when the backend does its own write)", nil, nil},
175+
"buffers_alloc": {COUNTER, "Number of buffers allocated", nil, nil},
176+
"stats_reset": {COUNTER, "Time at which these statistics were last reset", nil, nil},
177+
},
178+
true,
179+
0,
180+
},
164181
"pg_stat_database": {
165182
map[string]ColumnMapping{
166183
"datid": {LABEL, "OID of a database", nil, nil},
@@ -525,6 +542,8 @@ func WithConstantLabels(s string) ExporterOpt {
525542
e.constantLabels = parseConstLabels(s)
526543
if e.collectorName != "" {
527544
e.constantLabels["collector"] = e.collectorName
545+
} else {
546+
e.constantLabels["collector"] = "exporter"
528547
}
529548
}
530549
}

collector/pg_stat_bgwriter.go

+44-22
Original file line numberDiff line numberDiff line change
@@ -38,133 +38,133 @@ var statBGWriter = map[string]*prometheus.Desc{
3838
"checkpoints_timed": prometheus.NewDesc(
3939
prometheus.BuildFQName(namespace, bgWriterSubsystem, "checkpoints_timed_total"),
4040
"Number of scheduled checkpoints that have been performed",
41-
[]string{"server"},
41+
[]string{"collector", "server"},
4242
prometheus.Labels{},
4343
),
4444
"checkpoints_req": prometheus.NewDesc(
4545
prometheus.BuildFQName(namespace, bgWriterSubsystem, "checkpoints_req_total"),
4646
"Number of requested checkpoints that have been performed",
47-
[]string{"server"},
47+
[]string{"collector", "server"},
4848
prometheus.Labels{},
4949
),
5050
"checkpoint_write_time": prometheus.NewDesc(
5151
prometheus.BuildFQName(namespace, bgWriterSubsystem, "checkpoint_write_time_total"),
5252
"Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk, in milliseconds",
53-
[]string{"server"},
53+
[]string{"collector", "server"},
5454
prometheus.Labels{},
5555
),
5656
"checkpoint_sync_time": prometheus.NewDesc(
5757
prometheus.BuildFQName(namespace, bgWriterSubsystem, "checkpoint_sync_time_total"),
5858
"Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk, in milliseconds",
59-
[]string{"server"},
59+
[]string{"collector", "server"},
6060
prometheus.Labels{},
6161
),
6262
"buffers_checkpoint": prometheus.NewDesc(
6363
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_checkpoint_total"),
6464
"Number of buffers written during checkpoints",
65-
[]string{"server"},
65+
[]string{"collector", "server"},
6666
prometheus.Labels{},
6767
),
6868
"buffers_clean": prometheus.NewDesc(
6969
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_clean_total"),
7070
"Number of buffers written by the background writer",
71-
[]string{"server"},
71+
[]string{"collector", "server"},
7272
prometheus.Labels{},
7373
),
7474
"maxwritten_clean": prometheus.NewDesc(
7575
prometheus.BuildFQName(namespace, bgWriterSubsystem, "maxwritten_clean_total"),
7676
"Number of times the background writer stopped a cleaning scan because it had written too many buffers",
77-
[]string{"server"},
77+
[]string{"collector", "server"},
7878
prometheus.Labels{},
7979
),
8080
"buffers_backend": prometheus.NewDesc(
8181
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_backend_total"),
8282
"Number of buffers written directly by a backend",
83-
[]string{"server"},
83+
[]string{"collector", "server"},
8484
prometheus.Labels{},
8585
),
8686
"buffers_backend_fsync": prometheus.NewDesc(
8787
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_backend_fsync_total"),
8888
"Number of times a backend had to execute its own fsync call (normally the background writer handles those even when the backend does its own write)",
89-
[]string{"server"},
89+
[]string{"collector", "server"},
9090
prometheus.Labels{},
9191
),
9292
"buffers_alloc": prometheus.NewDesc(
9393
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_alloc_total"),
9494
"Number of buffers allocated",
95-
[]string{"server"},
95+
[]string{"collector", "server"},
9696
prometheus.Labels{},
9797
),
9898
"stats_reset": prometheus.NewDesc(
9999
prometheus.BuildFQName(namespace, bgWriterSubsystem, "stats_reset_total"),
100100
"Time at which these statistics were last reset",
101-
[]string{"server"},
101+
[]string{"collector", "server"},
102102
prometheus.Labels{},
103103
),
104104
"percona_checkpoints_timed": prometheus.NewDesc(
105105
prometheus.BuildFQName(namespace, bgWriterSubsystem, "checkpoints_timed"),
106106
"Number of scheduled checkpoints that have been performed",
107-
[]string{"server"},
107+
[]string{"collector", "server"},
108108
prometheus.Labels{},
109109
),
110110
"percona_checkpoints_req": prometheus.NewDesc(
111111
prometheus.BuildFQName(namespace, bgWriterSubsystem, "checkpoints_req"),
112112
"Number of requested checkpoints that have been performed",
113-
[]string{"server"},
113+
[]string{"collector", "server"},
114114
prometheus.Labels{},
115115
),
116116
"percona_checkpoint_write_time": prometheus.NewDesc(
117117
prometheus.BuildFQName(namespace, bgWriterSubsystem, "checkpoint_write_time"),
118118
"Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk, in milliseconds",
119-
[]string{"server"},
119+
[]string{"collector", "server"},
120120
prometheus.Labels{},
121121
),
122122
"percona_checkpoint_sync_time": prometheus.NewDesc(
123123
prometheus.BuildFQName(namespace, bgWriterSubsystem, "checkpoint_sync_time"),
124124
"Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk, in milliseconds",
125-
[]string{"server"},
125+
[]string{"collector", "server"},
126126
prometheus.Labels{},
127127
),
128128
"percona_buffers_checkpoint": prometheus.NewDesc(
129129
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_checkpoint"),
130130
"Number of buffers written during checkpoints",
131-
[]string{"server"},
131+
[]string{"collector", "server"},
132132
prometheus.Labels{},
133133
),
134134
"percona_buffers_clean": prometheus.NewDesc(
135135
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_clean"),
136136
"Number of buffers written by the background writer",
137-
[]string{"server"},
137+
[]string{"collector", "server"},
138138
prometheus.Labels{},
139139
),
140140
"percona_maxwritten_clean": prometheus.NewDesc(
141141
prometheus.BuildFQName(namespace, bgWriterSubsystem, "maxwritten_clean"),
142142
"Number of times the background writer stopped a cleaning scan because it had written too many buffers",
143-
[]string{"server"},
143+
[]string{"collector", "server"},
144144
prometheus.Labels{},
145145
),
146146
"percona_buffers_backend": prometheus.NewDesc(
147147
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_backend"),
148148
"Number of buffers written directly by a backend",
149-
[]string{"server"},
149+
[]string{"collector", "server"},
150150
prometheus.Labels{},
151151
),
152152
"percona_buffers_backend_fsync": prometheus.NewDesc(
153153
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_backend_fsync"),
154154
"Number of times a backend had to execute its own fsync call (normally the background writer handles those even when the backend does its own write)",
155-
[]string{"server"},
155+
[]string{"collector", "server"},
156156
prometheus.Labels{},
157157
),
158158
"percona_buffers_alloc": prometheus.NewDesc(
159159
prometheus.BuildFQName(namespace, bgWriterSubsystem, "buffers_alloc"),
160160
"Number of buffers allocated",
161-
[]string{"server"},
161+
[]string{"collector", "server"},
162162
prometheus.Labels{},
163163
),
164164
"percona_stats_reset": prometheus.NewDesc(
165165
prometheus.BuildFQName(namespace, bgWriterSubsystem, "stats_reset"),
166166
"Time at which these statistics were last reset",
167-
[]string{"server"},
167+
[]string{"collector", "server"},
168168
prometheus.Labels{},
169169
),
170170
}
@@ -211,133 +211,155 @@ func (PGStatBGWriterCollector) Update(ctx context.Context, server *server, ch ch
211211
statBGWriter["checkpoints_timed"],
212212
prometheus.CounterValue,
213213
float64(cpt),
214+
"exporter",
214215
server.GetName(),
215216
)
216217
ch <- prometheus.MustNewConstMetric(
217218
statBGWriter["checkpoints_req"],
218219
prometheus.CounterValue,
219220
float64(cpr),
221+
"exporter",
220222
server.GetName(),
221223
)
222224
ch <- prometheus.MustNewConstMetric(
223225
statBGWriter["checkpoint_write_time"],
224226
prometheus.CounterValue,
225227
float64(cpwt),
228+
"exporter",
226229
server.GetName(),
227230
)
228231
ch <- prometheus.MustNewConstMetric(
229232
statBGWriter["checkpoint_sync_time"],
230233
prometheus.CounterValue,
231234
float64(cpst),
235+
"exporter",
232236
server.GetName(),
233237
)
234238
ch <- prometheus.MustNewConstMetric(
235239
statBGWriter["buffers_checkpoint"],
236240
prometheus.CounterValue,
237241
float64(bcp),
242+
"exporter",
238243
server.GetName(),
239244
)
240245
ch <- prometheus.MustNewConstMetric(
241246
statBGWriter["buffers_clean"],
242247
prometheus.CounterValue,
243248
float64(bc),
249+
"exporter",
244250
server.GetName(),
245251
)
246252
ch <- prometheus.MustNewConstMetric(
247253
statBGWriter["maxwritten_clean"],
248254
prometheus.CounterValue,
249255
float64(mwc),
256+
"exporter",
250257
server.GetName(),
251258
)
252259
ch <- prometheus.MustNewConstMetric(
253260
statBGWriter["buffers_backend"],
254261
prometheus.CounterValue,
255262
float64(bb),
263+
"exporter",
256264
server.GetName(),
257265
)
258266
ch <- prometheus.MustNewConstMetric(
259267
statBGWriter["buffers_backend_fsync"],
260268
prometheus.CounterValue,
261269
float64(bbf),
270+
"exporter",
262271
server.GetName(),
263272
)
264273
ch <- prometheus.MustNewConstMetric(
265274
statBGWriter["buffers_alloc"],
266275
prometheus.CounterValue,
267276
float64(ba),
277+
"exporter",
268278
server.GetName(),
269279
)
270280
ch <- prometheus.MustNewConstMetric(
271281
statBGWriter["stats_reset"],
272282
prometheus.CounterValue,
273283
float64(sr.Unix()),
284+
"exporter",
274285
server.GetName(),
275286
)
276287

277288
ch <- prometheus.MustNewConstMetric(
278289
statBGWriter["percona_checkpoints_timed"],
279290
prometheus.CounterValue,
280291
float64(cpt),
292+
"exporter",
281293
server.GetName(),
282294
)
283295
ch <- prometheus.MustNewConstMetric(
284296
statBGWriter["percona_checkpoints_req"],
285297
prometheus.CounterValue,
286298
float64(cpr),
299+
"exporter",
287300
server.GetName(),
288301
)
289302
ch <- prometheus.MustNewConstMetric(
290303
statBGWriter["percona_checkpoint_write_time"],
291304
prometheus.CounterValue,
292305
float64(cpwt),
306+
"exporter",
293307
server.GetName(),
294308
)
295309
ch <- prometheus.MustNewConstMetric(
296310
statBGWriter["percona_checkpoint_sync_time"],
297311
prometheus.CounterValue,
298312
float64(cpst),
313+
"exporter",
299314
server.GetName(),
300315
)
301316
ch <- prometheus.MustNewConstMetric(
302317
statBGWriter["percona_buffers_checkpoint"],
303318
prometheus.CounterValue,
304319
float64(bcp),
320+
"exporter",
305321
server.GetName(),
306322
)
307323
ch <- prometheus.MustNewConstMetric(
308324
statBGWriter["percona_buffers_clean"],
309325
prometheus.CounterValue,
310326
float64(bc),
327+
"exporter",
311328
server.GetName(),
312329
)
313330
ch <- prometheus.MustNewConstMetric(
314331
statBGWriter["percona_maxwritten_clean"],
315332
prometheus.CounterValue,
316333
float64(mwc),
334+
"exporter",
317335
server.GetName(),
318336
)
319337
ch <- prometheus.MustNewConstMetric(
320338
statBGWriter["percona_buffers_backend"],
321339
prometheus.CounterValue,
322340
float64(bb),
341+
"exporter",
323342
server.GetName(),
324343
)
325344
ch <- prometheus.MustNewConstMetric(
326345
statBGWriter["percona_buffers_backend_fsync"],
327346
prometheus.CounterValue,
328347
float64(bbf),
348+
"exporter",
329349
server.GetName(),
330350
)
331351
ch <- prometheus.MustNewConstMetric(
332352
statBGWriter["percona_buffers_alloc"],
333353
prometheus.CounterValue,
334354
float64(ba),
355+
"exporter",
335356
server.GetName(),
336357
)
337358
ch <- prometheus.MustNewConstMetric(
338359
statBGWriter["percona_stats_reset"],
339360
prometheus.CounterValue,
340361
float64(sr.Unix()),
362+
"exporter",
341363
server.GetName(),
342364
)
343365

0 commit comments

Comments
 (0)