Skip to content

Commit dee62ca

Browse files
dehaansacristiangreco
authored andcommitted
Update prometheus/common
1 parent 40637c1 commit dee62ca

File tree

17 files changed

+114
-144
lines changed

17 files changed

+114
-144
lines changed

.github/workflows/golangci-lint.yml

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,15 @@ jobs:
2525
steps:
2626
- name: Checkout repository
2727
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
28-
with:
29-
persist-credentials: false
30-
- name: install Go
31-
uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
32-
with:
33-
persist-credentials: false
3428
- name: Install Go
35-
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
29+
uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # v5.2.0
3630
with:
37-
go-version: 1.24.x
31+
go-version: 1.23.x
3832
- name: Install snmp_exporter/generator dependencies
3933
run: sudo apt-get update && sudo apt-get -y install libsnmp-dev
4034
if: github.repository == 'prometheus/snmp_exporter'
4135
- name: Lint
42-
uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0
36+
uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 # v6.1.1
4337
with:
4438
args: --verbose
45-
version: v2.2.1
39+
version: v1.62.0

cmd/postgres_exporter/datasource.go

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

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

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

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

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

cmd/postgres_exporter/main.go

Lines changed: 12 additions & 12 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.
@@ -70,8 +70,8 @@ const (
7070

7171
func main() {
7272
kingpin.Version(version.Print(exporterName))
73-
promslogConfig := &promslog.Config{}
74-
flag.AddFlags(kingpin.CommandLine, promslogConfig)
73+
promlogConfig := &promslog.Config{}
74+
flag.AddFlags(kingpin.CommandLine, promlogConfig)
7575
kingpin.HelpFlag.Short('h')
7676
kingpin.Parse()
7777

@@ -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
defer pe.Close()
144144
prometheus.MustRegister(pe)
@@ -160,7 +160,7 @@ func main() {
160160
}
161161
landingPage, err := web.NewLandingPage(landingConfig)
162162
if err != nil {
163-
level.Error(rootFallbackLogger).Log("err", err)
163+
rootFallbackLogger.Error("Error initializing landing page", "err", err)
164164
os.Exit(1)
165165
}
166166
http.Handle("/", landingPage)
@@ -170,7 +170,7 @@ func main() {
170170

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

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)

0 commit comments

Comments
 (0)