Skip to content

Commit be5dc65

Browse files
authored
chore!: adopt log/slog, drop go-kit/log (#875)
* chore!: adopt log/slog, drop go-kit/log Requires: prometheus/common#697 This PR includes: - linter updates to enable `sloglint` linter - Go dep updates for prometheus/{client_golang,common,exporter-toolkit} libs - refactorings to adopt log/slog in favor of go-kit/log The bulk of this PR was automated by the following script which is being used to aid in converting the various exporters/projects to use slog: https://gist.github.com/tjhop/49f96fb7ebbe55b12deee0b0312d8434 Builds and passes tests locally with go workspaces and up-to-date main branch of prometheus/common. Signed-off-by: TJ Hoplock <[email protected]> * build(deps): bump prometheus/common to v0.60.0 Signed-off-by: TJ Hoplock <[email protected]> --------- Signed-off-by: TJ Hoplock <[email protected]>
1 parent abc1816 commit be5dc65

File tree

71 files changed

+212
-230
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+212
-230
lines changed

.golangci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ linters:
44
enable:
55
- misspell
66
- staticcheck
7+
- sloglint
78
disable-all: true

collector/binlog.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ package collector
1818
import (
1919
"context"
2020
"fmt"
21+
"log/slog"
2122
"strconv"
2223
"strings"
2324

24-
"github.com/go-kit/log"
2525
"github.com/prometheus/client_golang/prometheus"
2626
)
2727

@@ -71,7 +71,7 @@ func (ScrapeBinlogSize) Version() float64 {
7171
}
7272

7373
// Scrape collects data from database connection and sends it over channel as prometheus metric.
74-
func (ScrapeBinlogSize) Scrape(ctx context.Context, instance *instance, ch chan<- prometheus.Metric, logger log.Logger) error {
74+
func (ScrapeBinlogSize) Scrape(ctx context.Context, instance *instance, ch chan<- prometheus.Metric, logger *slog.Logger) error {
7575
var logBin uint8
7676
db := instance.getDB()
7777
err := db.QueryRowContext(ctx, logbinQuery).Scan(&logBin)

collector/binlog_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import (
1818
"testing"
1919

2020
"github.com/DATA-DOG/go-sqlmock"
21-
"github.com/go-kit/log"
2221
"github.com/prometheus/client_golang/prometheus"
2322
dto "github.com/prometheus/client_model/go"
23+
"github.com/prometheus/common/promslog"
2424
"github.com/smartystreets/goconvey/convey"
2525
)
2626

@@ -44,7 +44,7 @@ func TestScrapeBinlogSize(t *testing.T) {
4444

4545
ch := make(chan prometheus.Metric)
4646
go func() {
47-
if err = (ScrapeBinlogSize{}).Scrape(context.Background(), inst, ch, log.NewNopLogger()); err != nil {
47+
if err = (ScrapeBinlogSize{}).Scrape(context.Background(), inst, ch, promslog.NewNopLogger()); err != nil {
4848
t.Errorf("error calling function on test: %s", err)
4949
}
5050
close(ch)

collector/engine_innodb.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ package collector
1717

1818
import (
1919
"context"
20+
"log/slog"
2021
"regexp"
2122
"strconv"
2223
"strings"
2324

24-
"github.com/go-kit/log"
2525
"github.com/prometheus/client_golang/prometheus"
2626
)
2727

@@ -51,7 +51,7 @@ func (ScrapeEngineInnodbStatus) Version() float64 {
5151
}
5252

5353
// Scrape collects data from database connection and sends it over channel as prometheus metric.
54-
func (ScrapeEngineInnodbStatus) Scrape(ctx context.Context, instance *instance, ch chan<- prometheus.Metric, logger log.Logger) error {
54+
func (ScrapeEngineInnodbStatus) Scrape(ctx context.Context, instance *instance, ch chan<- prometheus.Metric, logger *slog.Logger) error {
5555
db := instance.getDB()
5656
rows, err := db.QueryContext(ctx, engineInnodbStatusQuery)
5757
if err != nil {

collector/engine_innodb_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import (
1818
"testing"
1919

2020
"github.com/DATA-DOG/go-sqlmock"
21-
"github.com/go-kit/log"
2221
"github.com/prometheus/client_golang/prometheus"
2322
dto "github.com/prometheus/client_model/go"
23+
"github.com/prometheus/common/promslog"
2424
"github.com/smartystreets/goconvey/convey"
2525
)
2626

@@ -155,7 +155,7 @@ END OF INNODB MONITOR OUTPUT
155155
inst := &instance{db: db}
156156
ch := make(chan prometheus.Metric)
157157
go func() {
158-
if err = (ScrapeEngineInnodbStatus{}).Scrape(context.Background(), inst, ch, log.NewNopLogger()); err != nil {
158+
if err = (ScrapeEngineInnodbStatus{}).Scrape(context.Background(), inst, ch, promslog.NewNopLogger()); err != nil {
159159
t.Errorf("error calling function on test: %s", err)
160160
}
161161
close(ch)

collector/engine_tokudb.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ package collector
1818
import (
1919
"context"
2020
"database/sql"
21+
"log/slog"
2122
"strings"
2223

23-
"github.com/go-kit/log"
2424
"github.com/prometheus/client_golang/prometheus"
2525
)
2626

@@ -50,7 +50,7 @@ func (ScrapeEngineTokudbStatus) Version() float64 {
5050
}
5151

5252
// Scrape collects data from database connection and sends it over channel as prometheus metric.
53-
func (ScrapeEngineTokudbStatus) Scrape(ctx context.Context, instance *instance, ch chan<- prometheus.Metric, logger log.Logger) error {
53+
func (ScrapeEngineTokudbStatus) Scrape(ctx context.Context, instance *instance, ch chan<- prometheus.Metric, logger *slog.Logger) error {
5454
db := instance.getDB()
5555
tokudbRows, err := db.QueryContext(ctx, engineTokudbStatusQuery)
5656
if err != nil {

collector/engine_tokudb_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import (
1818
"testing"
1919

2020
"github.com/DATA-DOG/go-sqlmock"
21-
"github.com/go-kit/log"
2221
"github.com/prometheus/client_golang/prometheus"
2322
dto "github.com/prometheus/client_model/go"
23+
"github.com/prometheus/common/promslog"
2424
"github.com/smartystreets/goconvey/convey"
2525
)
2626

@@ -60,7 +60,7 @@ func TestScrapeEngineTokudbStatus(t *testing.T) {
6060

6161
ch := make(chan prometheus.Metric)
6262
go func() {
63-
if err = (ScrapeEngineTokudbStatus{}).Scrape(context.Background(), inst, ch, log.NewNopLogger()); err != nil {
63+
if err = (ScrapeEngineTokudbStatus{}).Scrape(context.Background(), inst, ch, promslog.NewNopLogger()); err != nil {
6464
t.Errorf("error calling function on test: %s", err)
6565
}
6666
close(ch)

collector/exporter.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@ package collector
1616
import (
1717
"context"
1818
"fmt"
19+
"log/slog"
1920
"strings"
2021
"sync"
2122
"time"
2223

2324
"github.com/alecthomas/kingpin/v2"
24-
"github.com/go-kit/log"
25-
"github.com/go-kit/log/level"
2625
"github.com/go-sql-driver/mysql"
2726
"github.com/prometheus/client_golang/prometheus"
2827
)
@@ -80,14 +79,14 @@ var _ prometheus.Collector = (*Exporter)(nil)
8079
// Exporter collects MySQL metrics. It implements prometheus.Collector.
8180
type Exporter struct {
8281
ctx context.Context
83-
logger log.Logger
82+
logger *slog.Logger
8483
dsn string
8584
scrapers []Scraper
8685
instance *instance
8786
}
8887

8988
// New returns a new MySQL exporter for the provided DSN.
90-
func New(ctx context.Context, dsn string, scrapers []Scraper, logger log.Logger) *Exporter {
89+
func New(ctx context.Context, dsn string, scrapers []Scraper, logger *slog.Logger) *Exporter {
9190
// Setup extra params for the DSN, default to having a lock timeout.
9291
dsnParams := []string{fmt.Sprintf(timeoutParam, *exporterLockTimeout)}
9392

@@ -129,14 +128,14 @@ func (e *Exporter) scrape(ctx context.Context, ch chan<- prometheus.Metric) floa
129128
scrapeTime := time.Now()
130129
instance, err := newInstance(e.dsn)
131130
if err != nil {
132-
level.Error(e.logger).Log("msg", "Error opening connection to database", "err", err)
131+
e.logger.Error("Error opening connection to database", "err", err)
133132
return 0.0
134133
}
135134
defer instance.Close()
136135
e.instance = instance
137136

138137
if err := instance.Ping(); err != nil {
139-
level.Error(e.logger).Log("msg", "Error pinging mysqld", "err", err)
138+
e.logger.Error("Error pinging mysqld", "err", err)
140139
return 0.0
141140
}
142141

@@ -157,8 +156,8 @@ func (e *Exporter) scrape(ctx context.Context, ch chan<- prometheus.Metric) floa
157156
label := "collect." + scraper.Name()
158157
scrapeTime := time.Now()
159158
collectorSuccess := 1.0
160-
if err := scraper.Scrape(ctx, instance, ch, log.With(e.logger, "scraper", scraper.Name())); err != nil {
161-
level.Error(e.logger).Log("msg", "Error from scraper", "scraper", scraper.Name(), "target", e.getTargetFromDsn(), "err", err)
159+
if err := scraper.Scrape(ctx, instance, ch, e.logger.With("scraper", scraper.Name())); err != nil {
160+
e.logger.Error("Error from scraper", "scraper", scraper.Name(), "target", e.getTargetFromDsn(), "err", err)
162161
collectorSuccess = 0.0
163162
}
164163
ch <- prometheus.MustNewConstMetric(mysqlScrapeCollectorSuccess, prometheus.GaugeValue, collectorSuccess, label)
@@ -172,7 +171,7 @@ func (e *Exporter) getTargetFromDsn() string {
172171
// Get target from DSN.
173172
dsnConfig, err := mysql.ParseDSN(e.dsn)
174173
if err != nil {
175-
level.Error(e.logger).Log("msg", "Error parsing DSN", "err", err)
174+
e.logger.Error("Error parsing DSN", "err", err)
176175
return ""
177176
}
178177
return dsnConfig.Addr

collector/exporter_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import (
1717
"context"
1818
"testing"
1919

20-
"github.com/go-kit/log"
2120
"github.com/prometheus/client_golang/prometheus"
2221
"github.com/prometheus/common/model"
22+
"github.com/prometheus/common/promslog"
2323
"github.com/smartystreets/goconvey/convey"
2424
)
2525

@@ -36,7 +36,7 @@ func TestExporter(t *testing.T) {
3636
[]Scraper{
3737
ScrapeGlobalStatus{},
3838
},
39-
log.NewNopLogger(),
39+
promslog.NewNopLogger(),
4040
)
4141

4242
convey.Convey("Metrics describing", t, func() {

collector/global_status.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ package collector
1818
import (
1919
"context"
2020
"database/sql"
21+
"log/slog"
2122
"regexp"
2223
"strconv"
2324
"strings"
2425

25-
"github.com/go-kit/log"
2626
"github.com/prometheus/client_golang/prometheus"
2727
)
2828

@@ -99,7 +99,7 @@ func (ScrapeGlobalStatus) Version() float64 {
9999
}
100100

101101
// Scrape collects data from database connection and sends it over channel as prometheus metric.
102-
func (ScrapeGlobalStatus) Scrape(ctx context.Context, instance *instance, ch chan<- prometheus.Metric, logger log.Logger) error {
102+
func (ScrapeGlobalStatus) Scrape(ctx context.Context, instance *instance, ch chan<- prometheus.Metric, logger *slog.Logger) error {
103103
db := instance.getDB()
104104
globalStatusRows, err := db.QueryContext(ctx, globalStatusQuery)
105105
if err != nil {

0 commit comments

Comments
 (0)