@@ -18,16 +18,16 @@ import (
18
18
"database/sql"
19
19
"errors"
20
20
"fmt"
21
+ "log/slog"
21
22
"math"
22
23
"os"
23
24
"regexp"
24
25
"strings"
25
26
"time"
26
27
27
28
"github.com/blang/semver/v4"
28
- "github.com/go-kit/log"
29
- "github.com/go-kit/log/level"
30
29
"github.com/prometheus/client_golang/prometheus"
30
+ "github.com/prometheus/common/promslog"
31
31
)
32
32
33
33
// ColumnUsage should be one of several enum values which describe how a
@@ -262,7 +262,7 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
262
262
}
263
263
264
264
// Turn the MetricMap column mapping into a prometheus descriptor mapping.
265
- func makeDescMap (pgVersion semver.Version , serverLabels prometheus.Labels , metricMaps map [string ]intermediateMetricMap , logger log .Logger , metricPrefix string ) map [string ]MetricMapNamespace {
265
+ func makeDescMap (pgVersion semver.Version , serverLabels prometheus.Labels , metricMaps map [string ]intermediateMetricMap , logger * slog .Logger , metricPrefix string ) map [string ]MetricMapNamespace {
266
266
var metricMap = make (map [string ]MetricMapNamespace )
267
267
268
268
for namespace , intermediateMappings := range metricMaps {
@@ -285,7 +285,7 @@ func makeDescMap(pgVersion semver.Version, serverLabels prometheus.Labels, metri
285
285
if ! columnMapping .supportedVersions (pgVersion ) {
286
286
// It's very useful to be able to see what columns are being
287
287
// rejected.
288
- level .Debug (logger ). Log ( "msg" , "Column is being forced to discard due to version incompatibility" , "column" , columnName )
288
+ logger .Debug ("Column is being forced to discard due to version incompatibility" , "column" , columnName )
289
289
thisMap [columnName ] = MetricMap {
290
290
discard : true ,
291
291
conversion : func (_ interface {}) (float64 , bool ) {
@@ -372,7 +372,7 @@ func makeDescMap(pgVersion semver.Version, serverLabels prometheus.Labels, metri
372
372
case string :
373
373
durationString = t
374
374
default :
375
- level .Error (logger ). Log ( "msg" , "Duration conversion metric was not a string" )
375
+ logger .Error ("Duration conversion metric was not a string" )
376
376
return math .NaN (), false
377
377
}
378
378
@@ -382,7 +382,7 @@ func makeDescMap(pgVersion semver.Version, serverLabels prometheus.Labels, metri
382
382
383
383
d , err := time .ParseDuration (durationString )
384
384
if err != nil {
385
- level .Error (logger ). Log ( "msg" , "Failed converting result to metric" , "column" , columnName , "in" , in , "err" , err )
385
+ logger .Error ("Failed converting result to metric" , "column" , columnName , "in" , in , "err" , err )
386
386
return math .NaN (), false
387
387
}
388
388
return float64 (d / time .Millisecond ), true
@@ -424,7 +424,7 @@ type Exporter struct {
424
424
// servers are used to allow re-using the DB connection between scrapes.
425
425
// servers contains metrics map and query overrides.
426
426
servers * Servers
427
- logger log .Logger
427
+ logger * slog .Logger
428
428
metricPrefix string
429
429
}
430
430
@@ -483,7 +483,7 @@ func WithConstantLabels(s string) ExporterOpt {
483
483
}
484
484
485
485
// WithLogger configures logger.
486
- func WithLogger (logger log .Logger ) ExporterOpt {
486
+ func WithLogger (logger * slog .Logger ) ExporterOpt {
487
487
return func (e * Exporter ) {
488
488
e .logger = logger
489
489
}
@@ -508,7 +508,7 @@ func parseConstLabels(s string) prometheus.Labels {
508
508
for _ , p := range parts {
509
509
keyValue := strings .Split (strings .TrimSpace (p ), "=" )
510
510
if len (keyValue ) != 2 {
511
- level . Error ( rootFallbackLogger ). Log (`Wrong constant labels format, should be "key=value"` , "input" , p )
511
+ rootFallbackLogger . Error (`Wrong constant labels format, should be "key=value"` , "input" , p )
512
512
continue
513
513
}
514
514
key := strings .TrimSpace (keyValue [0 ])
@@ -527,7 +527,7 @@ func NewExporter(dsn []string, opts ...ExporterOpt) *Exporter {
527
527
e := & Exporter {
528
528
dsn : dsn ,
529
529
builtinMetricMaps : builtinMetricMaps ,
530
- logger : log .NewNopLogger (), // Can override with WithLogger option
530
+ logger : promslog .NewNopLogger (), // Can override with WithLogger option
531
531
}
532
532
533
533
for _ , opt := range opts {
@@ -599,8 +599,8 @@ func newDesc(subsystem, name, help string, labels prometheus.Labels) *prometheus
599
599
)
600
600
}
601
601
602
- func checkPostgresVersion (db * sql.DB , server string , logger log .Logger ) (semver.Version , string , error ) {
603
- level .Debug (logger ). Log ( "msg" , "Querying PostgreSQL version" , "server" , server )
602
+ func checkPostgresVersion (db * sql.DB , server string , logger * slog .Logger ) (semver.Version , string , error ) {
603
+ logger .Debug ("Querying PostgreSQL version" , "server" , server )
604
604
versionRow := db .QueryRow ("SELECT version();" )
605
605
var versionString string
606
606
err := versionRow .Scan (& versionString )
@@ -623,12 +623,12 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, server *Server)
623
623
}
624
624
625
625
if ! e .disableDefaultMetrics && semanticVersion .LT (lowestSupportedVersion ) {
626
- level . Warn ( server .logger ). Log ( "msg" , "PostgreSQL version is lower than our lowest supported version" , "server" , server , "version" , semanticVersion , "lowest_supported_version" , lowestSupportedVersion )
626
+ server .logger . Warn ( "PostgreSQL version is lower than our lowest supported version" , "server" , server , "version" , semanticVersion , "lowest_supported_version" , lowestSupportedVersion )
627
627
}
628
628
629
629
// Check if semantic version changed and recalculate maps if needed.
630
630
if semanticVersion .NE (server .lastMapVersion ) || server .metricMap == nil {
631
- level . Info ( server .logger ). Log ( "msg" , "Semantic version changed" , "server" , server , "from" , server .lastMapVersion , "to" , semanticVersion )
631
+ server .logger . Info ( "Semantic version changed" , "server" , server , "from" , server .lastMapVersion , "to" , semanticVersion )
632
632
server .mappingMtx .Lock ()
633
633
634
634
// Get Default Metrics only for master database
@@ -649,13 +649,13 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, server *Server)
649
649
// Calculate the hashsum of the useQueries
650
650
userQueriesData , err := os .ReadFile (e .userQueriesPath )
651
651
if err != nil {
652
- level . Error ( server .logger ). Log ( "msg" , "Failed to reload user queries" , "path" , e .userQueriesPath , "err" , err )
652
+ server .logger . Error ( "Failed to reload user queries" , "path" , e .userQueriesPath , "err" , err )
653
653
e .userQueriesError .WithLabelValues (e .userQueriesPath , "" ).Set (1 )
654
654
} else {
655
655
hashsumStr := fmt .Sprintf ("%x" , sha256 .Sum256 (userQueriesData ))
656
656
657
657
if err := addQueries (userQueriesData , semanticVersion , server , e .metricPrefix ); err != nil {
658
- level . Error ( server .logger ). Log ( "msg" , "Failed to reload user queries" , "path" , e .userQueriesPath , "err" , err )
658
+ server .logger . Error ( "Failed to reload user queries" , "path" , e .userQueriesPath , "err" , err )
659
659
e .userQueriesError .WithLabelValues (e .userQueriesPath , hashsumStr ).Set (1 )
660
660
} else {
661
661
// Mark user queries as successfully loaded
@@ -697,7 +697,7 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
697
697
if err := e .scrapeDSN (ch , dsn ); err != nil {
698
698
errorsCount ++
699
699
700
- level . Error ( e .logger ). Log ( "err" , err )
700
+ e .logger . Error ( "error encountered scraping DSN" , "err" , err )
701
701
702
702
if _ , ok := err .(* ErrorConnectToServer ); ok {
703
703
connectionErrorsCount ++
0 commit comments