Skip to content

Commit a539402

Browse files
committed
Update loggers to use slog instead of go-kit/log
Port of previous wrok from @dehaansa From dee62ca
1 parent 3c6dbed commit a539402

File tree

10 files changed

+60
-60
lines changed

10 files changed

+60
-60
lines changed

cmd/postgres_exporter/datasource.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,19 @@ func (e *Exporter) discoverDatabaseDSNs() []string {
3939
var err error
4040
dsnURI, err = url.Parse(dsn)
4141
if err != nil {
42-
level.Error(e.logger).Log("msg", "Unable to parse DSN as URI", "dsn", loggableDSN(dsn), "err", err)
42+
e.logger.Error("Unable to parse DSN as URI", "dsn", loggableDSN(dsn), "err", err)
4343
continue
4444
}
4545
} else if connstringRe.MatchString(dsn) {
4646
dsnConnstring = dsn
4747
} else {
48-
level.Error(e.logger).Log("msg", "Unable to parse DSN as either URI or connstring", "dsn", loggableDSN(dsn))
48+
e.logger.Error("Unable to parse DSN as either URI or connstring", "dsn", loggableDSN(dsn))
4949
continue
5050
}
5151

5252
server, err := e.servers.GetServer(dsn)
5353
if err != nil {
54-
level.Error(e.logger).Log("msg", "Error opening connection to database", "dsn", loggableDSN(dsn), "err", err)
54+
e.logger.Error("Error opening connection to database", "dsn", loggableDSN(dsn), "err", err)
5555
continue
5656
}
5757
dsns[dsn] = struct{}{}
@@ -61,7 +61,7 @@ func (e *Exporter) discoverDatabaseDSNs() []string {
6161

6262
databaseNames, err := queryDatabases(server)
6363
if err != nil {
64-
level.Error(e.logger).Log("msg", "Error querying databases", "dsn", loggableDSN(dsn), "err", err)
64+
e.logger.Error("Error querying databases", "dsn", loggableDSN(dsn), "err", err)
6565
continue
6666
}
6767
for _, databaseName := range databaseNames {
@@ -109,7 +109,7 @@ func (e *Exporter) scrapeDSN(ch chan<- prometheus.Metric, dsn string) error {
109109

110110
// Check if map versions need to be updated
111111
if err := e.checkMapVersions(ch, server); err != nil {
112-
level.Warn(e.logger).Log("msg", "Proceeding with outdated query maps, as the Postgres version could not be determined", "err", err)
112+
e.logger.Warn("Proceeding with outdated query maps, as the Postgres version could not be determined", "err", err)
113113
}
114114

115115
return server.Scrape(ch, e.disableSettingsMetrics)

cmd/postgres_exporter/main.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ var (
5050
includeDatabases = kingpin.Flag("include-databases", "A list of databases to include when autoDiscoverDatabases is enabled (DEPRECATED)").Default("").Envar("PG_EXPORTER_INCLUDE_DATABASES").String()
5151

5252
// rootFallbackLogger is used when we cannot use the regular logger in this fork. Under normal operations, there shouldn't be anything logged using this.
53-
rootFallbackLogger = log.NewLogfmtLogger(os.Stderr)
53+
rootFallbackLogger = promslog.New(&promslog.Config{})
5454
)
5555

5656
// Metric name parts.
@@ -82,28 +82,28 @@ func main() {
8282

8383
if err := c.ReloadConfig(*configFile, rootFallbackLogger); err != nil {
8484
// This is not fatal, but it means that auth must be provided for every dsn.
85-
level.Warn(rootFallbackLogger).Log("msg", "Error loading config", "err", err)
85+
rootFallbackLogger.Warn("Error loading config", "err", err)
8686
}
8787

8888
dsns, err := getDataSources()
8989
if err != nil {
90-
level.Error(rootFallbackLogger).Log("msg", "Failed reading data sources", "err", err.Error())
90+
rootFallbackLogger.Error("Failed reading data sources", "err", err.Error())
9191
os.Exit(1)
9292
}
9393

9494
excludedDatabases := strings.Split(*excludeDatabases, ",")
95-
rootFallbackLogger.Log("msg", "Excluded databases", "databases", fmt.Sprintf("%v", excludedDatabases))
95+
rootFallbackLogger.Info("Excluded databases", "databases", fmt.Sprintf("%v", excludedDatabases))
9696

9797
if *queriesPath != "" {
98-
level.Warn(rootFallbackLogger).Log("msg", "The extended queries.yaml config is DEPRECATED", "file", *queriesPath)
98+
rootFallbackLogger.Warn("The extended queries.yaml config is DEPRECATED", "file", *queriesPath)
9999
}
100100

101101
if *autoDiscoverDatabases || *excludeDatabases != "" || *includeDatabases != "" {
102-
level.Warn(rootFallbackLogger).Log("msg", "Scraping additional databases via auto discovery is DEPRECATED")
102+
rootFallbackLogger.Warn("Scraping additional databases via auto discovery is DEPRECATED")
103103
}
104104

105105
if *constantLabelsList != "" {
106-
level.Warn(rootFallbackLogger).Log("msg", "Constant labels on all metrics is DEPRECATED")
106+
rootFallbackLogger.Warn("Constant labels on all metrics is DEPRECATED")
107107
}
108108

109109
opts := []ExporterOpt{
@@ -138,7 +138,7 @@ func main() {
138138
[]string{},
139139
)
140140
if err != nil {
141-
level.Warn(rootFallbackLogger).Log("msg", "Failed to create PostgresCollector", "err", err.Error())
141+
rootFallbackLogger.Warn("Failed to create PostgresCollector", "err", err.Error())
142142
} else {
143143
prometheus.MustRegister(pe)
144144
}
@@ -159,7 +159,7 @@ func main() {
159159
}
160160
landingPage, err := web.NewLandingPage(landingConfig)
161161
if err != nil {
162-
level.Error(rootFallbackLogger).Log("err", err)
162+
rootFallbackLogger.Error("Error initializing landing page", "err", err)
163163
os.Exit(1)
164164
}
165165
http.Handle("/", landingPage)
@@ -169,7 +169,7 @@ func main() {
169169

170170
srv := &http.Server{}
171171
if err := web.ListenAndServe(srv, webConfig, rootFallbackLogger); err != nil {
172-
level.Error(rootFallbackLogger).Log("msg", "Error running HTTP server", "err", err)
172+
rootFallbackLogger.Error("Error running HTTP server", "err", err)
173173
os.Exit(1)
174174
}
175175
}

cmd/postgres_exporter/namespace.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,10 @@ func queryNamespaceMappings(ch chan<- prometheus.Metric, server *Server) map[str
189189
scrapeStart := time.Now()
190190

191191
for namespace, mapping := range server.metricMap {
192-
level.Debug(server.logger).Log("msg", "Querying namespace", "namespace", namespace)
192+
server.logger.Debug("Querying namespace", "namespace", namespace)
193193

194194
if mapping.master && !server.master {
195-
level.Debug(server.logger).Log("msg", "Query skipped...")
195+
server.logger.Debug("Query skipped...")
196196
continue
197197
}
198198

@@ -201,7 +201,7 @@ func queryNamespaceMappings(ch chan<- prometheus.Metric, server *Server) map[str
201201
serVersion, _ := semver.Parse(server.lastMapVersion.String())
202202
runServerRange, _ := semver.ParseRange(server.runonserver)
203203
if !runServerRange(serVersion) {
204-
level.Debug(server.logger).Log("msg", "Query skipped for this database version", "version", server.lastMapVersion.String(), "target_version", server.runonserver)
204+
server.logger.Debug("Query skipped for this database version", "version", server.lastMapVersion.String(), "target_version", server.runonserver)
205205
continue
206206
}
207207
}
@@ -232,12 +232,12 @@ func queryNamespaceMappings(ch chan<- prometheus.Metric, server *Server) map[str
232232
// Serious error - a namespace disappeared
233233
if err != nil {
234234
namespaceErrors[namespace] = err
235-
level.Info(server.logger).Log("err", err)
235+
server.logger.Info("error encountered querying namespace metrics", "err", err)
236236
}
237237
// Non-serious errors - likely version or parsing problems.
238238
if len(nonFatalErrors) > 0 {
239239
for _, err := range nonFatalErrors {
240-
level.Info(server.logger).Log("err", err)
240+
server.logger.Info("nonfatal error encountered querying namespace metrics", "err", err)
241241
}
242242
}
243243

cmd/postgres_exporter/pg_setting.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ var (
3131

3232
// Query the pg_settings view containing runtime variables
3333
func querySettings(ch chan<- prometheus.Metric, server *Server) error {
34-
level.Debug(server.logger).Log("msg", "Querying pg_setting view", "server", server)
34+
server.logger.Debug("Querying pg_setting view", "server", server)
3535

3636
// pg_settings docs: https://www.postgresql.org/docs/current/static/view-pg-settings.html
3737
//

cmd/postgres_exporter/postgres_exporter.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ import (
1818
"database/sql"
1919
"errors"
2020
"fmt"
21+
"log/slog"
2122
"math"
2223
"os"
2324
"regexp"
2425
"strings"
2526
"time"
2627

2728
"github.com/blang/semver/v4"
28-
"github.com/go-kit/log"
29-
"github.com/go-kit/log/level"
3029
"github.com/prometheus/client_golang/prometheus"
30+
"github.com/prometheus/common/promslog"
3131
)
3232

3333
// ColumnUsage should be one of several enum values which describe how a
@@ -265,7 +265,7 @@ var builtinMetricMaps = map[string]intermediateMetricMap{
265265
}
266266

267267
// Turn the MetricMap column mapping into a prometheus descriptor mapping.
268-
func makeDescMap(pgVersion semver.Version, serverLabels prometheus.Labels, metricMaps map[string]intermediateMetricMap, logger log.Logger, metricPrefix string) map[string]MetricMapNamespace {
268+
func makeDescMap(pgVersion semver.Version, serverLabels prometheus.Labels, metricMaps map[string]intermediateMetricMap, logger *slog.Logger, metricPrefix string) map[string]MetricMapNamespace {
269269
var metricMap = make(map[string]MetricMapNamespace)
270270

271271
for namespace, intermediateMappings := range metricMaps {
@@ -427,7 +427,7 @@ type Exporter struct {
427427
// servers are used to allow re-using the DB connection between scrapes.
428428
// servers contains metrics map and query overrides.
429429
servers *Servers
430-
logger log.Logger
430+
logger *slog.Logger
431431
metricPrefix string
432432
}
433433

@@ -486,7 +486,7 @@ func WithConstantLabels(s string) ExporterOpt {
486486
}
487487

488488
// WithLogger configures logger.
489-
func WithLogger(logger log.Logger) ExporterOpt {
489+
func WithLogger(logger *slog.Logger) ExporterOpt {
490490
return func(e *Exporter) {
491491
e.logger = logger
492492
}
@@ -511,7 +511,7 @@ func parseConstLabels(s string) prometheus.Labels {
511511
for _, p := range parts {
512512
keyValue := strings.Split(strings.TrimSpace(p), "=")
513513
if len(keyValue) != 2 {
514-
level.Error(rootFallbackLogger).Log(`Wrong constant labels format, should be "key=value"`, "input", p)
514+
rootFallbackLogger.Error(`Wrong constant labels format, should be "key=value"`, "input", p)
515515
continue
516516
}
517517
key := strings.TrimSpace(keyValue[0])
@@ -530,7 +530,7 @@ func NewExporter(dsn []string, opts ...ExporterOpt) *Exporter {
530530
e := &Exporter{
531531
dsn: dsn,
532532
builtinMetricMaps: builtinMetricMaps,
533-
logger: log.NewNopLogger(), // Can override with WithLogger option
533+
logger: promslog.NewNopLogger(), // Can override with WithLogger option
534534
}
535535

536536
for _, opt := range opts {
@@ -602,8 +602,8 @@ func newDesc(subsystem, name, help string, labels prometheus.Labels) *prometheus
602602
)
603603
}
604604

605-
func checkPostgresVersion(db *sql.DB, server string, logger log.Logger) (semver.Version, string, error) {
606-
level.Debug(logger).Log("msg", "Querying PostgreSQL version", "server", server)
605+
func checkPostgresVersion(db *sql.DB, server string, logger *slog.Logger) (semver.Version, string, error) {
606+
logger.Debug("Querying PostgreSQL version", "server", server)
607607
versionRow := db.QueryRow("SELECT version();")
608608
var versionString string
609609
err := versionRow.Scan(&versionString)
@@ -626,12 +626,12 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, server *Server)
626626
}
627627

628628
if !e.disableDefaultMetrics && semanticVersion.LT(lowestSupportedVersion) {
629-
level.Warn(server.logger).Log("msg", "PostgreSQL version is lower than our lowest supported version", "server", server, "version", semanticVersion, "lowest_supported_version", lowestSupportedVersion)
629+
server.logger.Warn("PostgreSQL version is lower than our lowest supported version", "server", server, "version", semanticVersion, "lowest_supported_version", lowestSupportedVersion)
630630
}
631631

632632
// Check if semantic version changed and recalculate maps if needed.
633633
if semanticVersion.NE(server.lastMapVersion) || server.metricMap == nil {
634-
level.Info(server.logger).Log("msg", "Semantic version changed", "server", server, "from", server.lastMapVersion, "to", semanticVersion)
634+
server.logger.Info("Semantic version changed", "server", server, "from", server.lastMapVersion, "to", semanticVersion)
635635
server.mappingMtx.Lock()
636636

637637
// Get Default Metrics only for master database
@@ -652,13 +652,13 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, server *Server)
652652
// Calculate the hashsum of the useQueries
653653
userQueriesData, err := os.ReadFile(e.userQueriesPath)
654654
if err != nil {
655-
level.Error(server.logger).Log("msg", "Failed to reload user queries", "path", e.userQueriesPath, "err", err)
655+
server.logger.Error("Failed to reload user queries", "path", e.userQueriesPath, "err", err)
656656
e.userQueriesError.WithLabelValues(e.userQueriesPath, "").Set(1)
657657
} else {
658658
hashsumStr := fmt.Sprintf("%x", sha256.Sum256(userQueriesData))
659659

660660
if err := addQueries(userQueriesData, semanticVersion, server, e.metricPrefix); err != nil {
661-
level.Error(server.logger).Log("msg", "Failed to reload user queries", "path", e.userQueriesPath, "err", err)
661+
server.logger.Error("Failed to reload user queries", "path", e.userQueriesPath, "err", err)
662662
e.userQueriesError.WithLabelValues(e.userQueriesPath, hashsumStr).Set(1)
663663
} else {
664664
// Mark user queries as successfully loaded
@@ -700,7 +700,7 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
700700
if err := e.scrapeDSN(ch, dsn); err != nil {
701701
errorsCount++
702702

703-
level.Error(e.logger).Log("err", err)
703+
e.logger.Error("error encountered scraping DSN", "err", err)
704704

705705
if _, ok := err.(*ErrorConnectToServer); ok {
706706
connectionErrorsCount++

cmd/postgres_exporter/postgres_exporter_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ import (
2424
"time"
2525

2626
"github.com/blang/semver/v4"
27-
"github.com/go-kit/log"
2827
"github.com/prometheus/client_golang/prometheus"
28+
"github.com/prometheus/common/promslog"
2929
. "gopkg.in/check.v1"
3030
)
3131

@@ -55,7 +55,7 @@ func (s *FunctionalSuite) TestSemanticVersionColumnDiscard(c *C) {
5555

5656
{
5757
// No metrics should be eliminated
58-
resultMap := makeDescMap(semver.MustParse("0.0.1"), prometheus.Labels{}, testMetricMap, log.NewLogfmtLogger(os.Stderr), "pg")
58+
resultMap := makeDescMap(semver.MustParse("0.0.1"), prometheus.Labels{}, testMetricMap, promslog.New(&promslog.Config{}), "pg")
5959
c.Check(
6060
resultMap["test_namespace"].columnMappings["metric_which_stays"].discard,
6161
Equals,
@@ -76,7 +76,7 @@ func (s *FunctionalSuite) TestSemanticVersionColumnDiscard(c *C) {
7676
testMetricMap["test_namespace"].columnMappings["metric_which_discards"] = discardableMetric
7777

7878
// Discard metric should be discarded
79-
resultMap := makeDescMap(semver.MustParse("0.0.1"), prometheus.Labels{}, testMetricMap, log.NewLogfmtLogger(os.Stderr), "pg")
79+
resultMap := makeDescMap(semver.MustParse("0.0.1"), prometheus.Labels{}, testMetricMap, promslog.New(&promslog.Config{}), "pg")
8080
c.Check(
8181
resultMap["test_namespace"].columnMappings["metric_which_stays"].discard,
8282
Equals,
@@ -97,7 +97,7 @@ func (s *FunctionalSuite) TestSemanticVersionColumnDiscard(c *C) {
9797
testMetricMap["test_namespace"].columnMappings["metric_which_discards"] = discardableMetric
9898

9999
// Discard metric should be discarded
100-
resultMap := makeDescMap(semver.MustParse("0.0.2"), prometheus.Labels{}, testMetricMap, log.NewLogfmtLogger(os.Stderr), "pg")
100+
resultMap := makeDescMap(semver.MustParse("0.0.2"), prometheus.Labels{}, testMetricMap, promslog.New(&promslog.Config{}), "pg")
101101
c.Check(
102102
resultMap["test_namespace"].columnMappings["metric_which_stays"].discard,
103103
Equals,
@@ -411,7 +411,7 @@ func (s *FunctionalSuite) TestBooleanConversionToValueAndString(c *C) {
411411
func (s *FunctionalSuite) TestParseUserQueries(c *C) {
412412
userQueriesData, err := os.ReadFile("./tests/user_queries_ok.yaml")
413413
if err == nil {
414-
metricMaps, newQueryOverrides, err := parseUserQueries(userQueriesData, log.NewLogfmtLogger(os.Stderr))
414+
metricMaps, newQueryOverrides, err := parseUserQueries(userQueriesData, promslog.New(&promslog.Config{}))
415415
c.Assert(err, Equals, nil)
416416
c.Assert(metricMaps, NotNil)
417417
c.Assert(newQueryOverrides, NotNil)

cmd/postgres_exporter/queries.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ package postgres_exporter
1616
import (
1717
"errors"
1818
"fmt"
19-
"github.com/go-kit/log"
19+
"log/slog"
2020

2121
"github.com/blang/semver/v4"
2222
"gopkg.in/yaml.v2"
@@ -168,7 +168,7 @@ var queryOverrides = map[string][]OverrideQuery{
168168

169169
// Convert the query override file to the version-specific query override file
170170
// for the exporter.
171-
func makeQueryOverrideMap(pgVersion semver.Version, queryOverrides map[string][]OverrideQuery, logger log.Logger) map[string]string {
171+
func makeQueryOverrideMap(pgVersion semver.Version, queryOverrides map[string][]OverrideQuery, logger *slog.Logger) map[string]string {
172172
resultMap := make(map[string]string)
173173
for name, overrideDef := range queryOverrides {
174174
// Find a matching semver. We make it an error to have overlapping
@@ -190,7 +190,7 @@ func makeQueryOverrideMap(pgVersion semver.Version, queryOverrides map[string][]
190190
return resultMap
191191
}
192192

193-
func parseUserQueries(content []byte, logger log.Logger) (map[string]intermediateMetricMap, map[string]string, error) {
193+
func parseUserQueries(content []byte, logger *slog.Logger) (map[string]intermediateMetricMap, map[string]string, error) {
194194
var userQueries UserQueries
195195

196196
err := yaml.Unmarshal(content, &userQueries)
@@ -255,9 +255,9 @@ func addQueries(content []byte, pgVersion semver.Version, server *Server, metric
255255
for k, v := range partialExporterMap {
256256
_, found := server.metricMap[k]
257257
if found {
258-
level.Debug(server.logger).Log("msg", "Overriding metric from user YAML file", "metric", k)
258+
server.logger.Debug("Overriding metric from user YAML file", "metric", k)
259259
} else {
260-
level.Debug(server.logger).Log("msg", "Adding new metric from user YAML file", "metric", k)
260+
server.logger.Debug("Adding new metric from user YAML file", "metric", k)
261261
}
262262
server.metricMap[k] = v
263263
}
@@ -266,9 +266,9 @@ func addQueries(content []byte, pgVersion semver.Version, server *Server, metric
266266
for k, v := range newQueryOverrides {
267267
_, found := server.queryOverrides[k]
268268
if found {
269-
level.Debug(server.logger).Log("msg", "Overriding query override from user YAML file", "query_override", k)
269+
server.logger.Debug("Overriding query override from user YAML file", "query_override", k)
270270
} else {
271-
level.Debug(server.logger).Log("msg", "Adding new query override from user YAML file", "query_override", k)
271+
server.logger.Debug("Adding new query override from user YAML file", "query_override", k)
272272
}
273273
server.queryOverrides[k] = v
274274
}

0 commit comments

Comments
 (0)