Skip to content

Commit 1e1e4e2

Browse files
committed
Fixed the below review comments given by Ashesh Vashi
Instead of having db version string from yml file, user can define the range of database server version where query is to be executed. If user want to run the query on database version greater than 10.0.0, use below format. runonserver: ">=10.0.0" Below are the example of db version range user can defined in yml file. <=10.1.0 >=12.1.0 =11.0.0 <9.6.0 || >=11.0.0
1 parent 769f487 commit 1e1e4e2

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

cmd/postgres_exporter/postgres_exporter.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
224224
},
225225
true,
226226
0,
227-
"all",
227+
"",
228228
},
229229
"pg_stat_database": {
230230
map[string]ColumnMapping{
@@ -250,7 +250,7 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
250250
},
251251
true,
252252
0,
253-
"all",
253+
"",
254254
},
255255
"pg_stat_database_conflicts": {
256256
map[string]ColumnMapping{
@@ -264,7 +264,7 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
264264
},
265265
true,
266266
0,
267-
"all",
267+
"",
268268
},
269269
"pg_locks": {
270270
map[string]ColumnMapping{
@@ -274,7 +274,7 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
274274
},
275275
true,
276276
0,
277-
"all",
277+
"",
278278
},
279279
"pg_stat_replication": {
280280
map[string]ColumnMapping{
@@ -321,7 +321,7 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
321321
},
322322
true,
323323
0,
324-
"all",
324+
"",
325325
},
326326
"pg_stat_archiver": {
327327
map[string]ColumnMapping{
@@ -336,7 +336,7 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
336336
},
337337
true,
338338
0,
339-
"all",
339+
"",
340340
},
341341
"pg_stat_activity": {
342342
map[string]ColumnMapping{
@@ -347,7 +347,7 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
347347
},
348348
true,
349349
0,
350-
"all",
350+
"",
351351
},
352352
}
353353

@@ -504,7 +504,6 @@ func parseUserQueries(content []byte) (map[string]intermediateMetricMap, map[str
504504
return nil, nil, err
505505
}
506506

507-
508507
// Stores the loaded map representation
509508
metricMaps := make(map[string]intermediateMetricMap)
510509
newQueryOverrides := make(map[string]string)
@@ -844,11 +843,10 @@ type cachedMetrics struct {
844843
// Server describes a connection to Postgres.
845844
// Also it contains metrics map and query overrides.
846845
type Server struct {
847-
db *sql.DB
848-
labels prometheus.Labels
849-
master bool
846+
db *sql.DB
847+
labels prometheus.Labels
848+
master bool
850849
runonserver string
851-
serverversion string
852850

853851
// Last version used to calculate metric map. If mismatch on scrape,
854852
// then maps are recalculated.
@@ -894,7 +892,6 @@ func NewServer(dsn string, opts ...ServerOpt) (*Server, error) {
894892
s := &Server{
895893
db: db,
896894
master: false,
897-
runonserver: "all",
898895
labels: prometheus.Labels{
899896
serverLabelName: fingerprint,
900897
},
@@ -1342,10 +1339,14 @@ func queryNamespaceMappings(ch chan<- prometheus.Metric, server *Server) map[str
13421339
continue
13431340
}
13441341

1345-
// check if the query is to be run on specific server version or not
1346-
if len(mapping.runonserver) > 0 && !strings.Contains(mapping.runonserver, "all") && !strings.Contains(server.serverversion, mapping.runonserver) {
1347-
log.Debugln("Query skipped for database version: [%s] as it should be run on database server version: [%s]", server.serverversion, mapping.runonserver)
1348-
continue
1342+
// check if the query is to be run on specific database server version range or not
1343+
if len(mapping.runonserver) > 0 {
1344+
serVersion, _ := semver.Parse(server.lastMapVersion.String())
1345+
runServerRange, _ := semver.ParseRange(mapping.runonserver)
1346+
if !runServerRange(serVersion) {
1347+
log.Debugln("Query skipped for database version: [%s] as it should be run on database server version: [%s]", server.lastMapVersion.String(), mapping.runonserver)
1348+
continue
1349+
}
13491350
}
13501351

13511352
scrapeMetric := false
@@ -1436,7 +1437,6 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, server *Server)
14361437
}
14371438

14381439
server.lastMapVersion = semanticVersion
1439-
server.serverversion = semanticVersion.String()
14401440

14411441
if e.userQueriesPath != "" {
14421442
// Clear the metric while a reload is happening

0 commit comments

Comments
 (0)