Skip to content

Commit 25de313

Browse files
authored
PMM-11497 Update dependencies. (percona#87)
1 parent 5ba7c07 commit 25de313

15 files changed

+403
-310
lines changed

.github/workflows/go.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
strategy:
99
matrix:
1010
go-version:
11-
- 1.17
11+
- 1.19
1212
include:
1313
- go-version: tip
1414
os: ubuntu-latest

.github/workflows/release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
name: Set up Go
2121
uses: percona-platform/setup-go@v2
2222
with:
23-
go-version: 1.17
23+
go-version: 1.19
2424
-
2525
name: Login to GitHub Container Registry
2626
uses: percona-platform/login-action@v1

basic/collector.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package basic
22

33
import (
4+
"fmt"
45
"sync"
56
"time"
67

8+
"github.com/go-kit/log"
9+
"github.com/go-kit/log/level"
710
"github.com/prometheus/client_golang/prometheus"
8-
"github.com/prometheus/common/log"
911

1012
"github.com/percona/rds_exporter/config"
1113
"github.com/percona/rds_exporter/sessions"
@@ -36,12 +38,12 @@ type Collector struct {
3638
}
3739

3840
// New creates a new instance of a Collector.
39-
func New(config *config.Config, sessions *sessions.Sessions) *Collector {
41+
func New(config *config.Config, sessions *sessions.Sessions, logger log.Logger) *Collector {
4042
return &Collector{
4143
config: config,
4244
sessions: sessions,
4345
metrics: Metrics,
44-
l: log.With("component", "basic"),
46+
l: log.With(logger, "component", "basic"),
4547
}
4648
}
4749

@@ -63,7 +65,7 @@ func (e *Collector) collect(ch chan<- prometheus.Metric) {
6365

6466
for _, instance := range e.config.Instances {
6567
if instance.DisableBasicMetrics {
66-
e.l.Debugf("Instance %s has disabled basic metrics, skipping.", instance)
68+
level.Debug(e.l).Log("msg", fmt.Sprintf("Instance %s has disabled basic metrics, skipping.", instance))
6769
continue
6870
}
6971
instance := instance
@@ -73,7 +75,7 @@ func (e *Collector) collect(ch chan<- prometheus.Metric) {
7375

7476
s := NewScraper(&instance, e, ch)
7577
if s == nil {
76-
e.l.Errorf("No scraper for %s, skipping.", instance)
78+
level.Error(e.l).Log("msg", fmt.Sprintf("No scraper for %s, skipping.", instance))
7779
return
7880
}
7981
s.Scrape()

basic/collector_test.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"testing"
88

99
"github.com/percona/exporter_shared/helpers"
10+
"github.com/prometheus/common/promlog"
1011
"github.com/stretchr/testify/assert"
1112
"github.com/stretchr/testify/require"
1213

@@ -18,11 +19,12 @@ import (
1819
func TestCollector(t *testing.T) {
1920
cfg, err := config.Load("../config.tests.yml")
2021
require.NoError(t, err)
21-
client := client.New()
22-
sess, err := sessions.New(cfg.Instances, client.HTTP(), false)
22+
logger := promlog.New(&promlog.Config{})
23+
client := client.New(logger)
24+
sess, err := sessions.New(cfg.Instances, client.HTTP(), logger, false)
2325
require.NoError(t, err)
2426

25-
c := New(cfg, sess)
27+
c := New(cfg, sess, logger)
2628

2729
actualMetrics := helpers.ReadMetrics(helpers.CollectMetrics(c))
2830
sort.Slice(actualMetrics, func(i, j int) bool { return actualMetrics[i].Less(actualMetrics[j]) })
@@ -52,7 +54,8 @@ func TestCollector(t *testing.T) {
5254
func TestCollectorDisableBasicMetrics(t *testing.T) {
5355
cfg, err := config.Load("../config.tests.yml")
5456
require.NoError(t, err)
55-
client := client.New()
57+
logger := promlog.New(&promlog.Config{})
58+
client := client.New(logger)
5659
instanceGroups := make(map[bool][]string, 2)
5760
for i := range cfg.Instances {
5861
// Disable basic metrics in even instances.
@@ -62,10 +65,10 @@ func TestCollectorDisableBasicMetrics(t *testing.T) {
6265
// Groups instance names by disabled or enabled metrics.
6366
instanceGroups[isDisabled] = append(instanceGroups[isDisabled], cfg.Instances[i].Instance)
6467
}
65-
sess, err := sessions.New(cfg.Instances, client.HTTP(), false)
68+
sess, err := sessions.New(cfg.Instances, client.HTTP(), logger, false)
6669
require.NoError(t, err)
6770

68-
c := New(cfg, sess)
71+
c := New(cfg, sess, logger)
6972

7073
actualMetrics := helpers.ReadMetrics(helpers.CollectMetrics(c))
7174
actualLines := helpers.Format(helpers.WriteMetrics(actualMetrics))

basic/scraper.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/aws/aws-sdk-go/aws"
88
"github.com/aws/aws-sdk-go/service/cloudwatch"
9+
"github.com/go-kit/log/level"
910
"github.com/prometheus/client_golang/prometheus"
1011

1112
"github.com/percona/rds_exporter/config"
@@ -85,7 +86,7 @@ func (s *Scraper) Scrape() {
8586
defer wg.Done()
8687

8788
if err := s.scrapeMetric(metric); err != nil {
88-
s.collector.l.With("metric", metric.cwName).Error(err)
89+
level.Error(s.collector.l).Log("metric", metric.cwName, "error", err)
8990
}
9091
}()
9192
}

client/client.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"net/http"
55
"time"
66

7+
"github.com/go-kit/log"
78
"github.com/prometheus/client_golang/prometheus"
89
)
910

@@ -14,8 +15,8 @@ type Client struct {
1415
}
1516

1617
// New creates new Client.
17-
func New() *Client {
18-
t := newTransport()
18+
func New(logger log.Logger) *Client {
19+
t := newTransport(logger)
1920
return &Client{
2021
c: &http.Client{
2122
Transport: t,

client/transport.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package client
22

33
import (
4+
"fmt"
45
"net/http"
56
"strconv"
67
"time"
78

9+
"github.com/go-kit/log"
10+
"github.com/go-kit/log/level"
811
"github.com/prometheus/client_golang/prometheus"
9-
"github.com/prometheus/common/log"
1012
)
1113

1214
type transport struct {
@@ -17,14 +19,14 @@ type transport struct {
1719
mResponses *prometheus.SummaryVec
1820
}
1921

20-
func newTransport() *transport {
22+
func newTransport(logger log.Logger) *transport {
2123
return &transport{
2224
t: &http.Transport{
2325
MaxIdleConnsPerHost: 5,
2426
IdleConnTimeout: 2 * time.Minute,
2527
Proxy: http.ProxyFromEnvironment,
2628
},
27-
l: log.With("component", "transport"),
29+
l: log.With(logger, "component", "transport"),
2830

2931
mRequests: prometheus.NewCounter(prometheus.CounterOpts{
3032
Name: "rds_exporter_requests_total",
@@ -46,10 +48,10 @@ func (t *transport) RoundTrip(req *http.Request) (*http.Response, error) {
4648
duration := time.Since(start)
4749
if resp != nil {
4850
t.mResponses.WithLabelValues(strconv.Itoa(resp.StatusCode)).Observe(duration.Seconds())
49-
t.l.Debugf("%s %s -> %d (%s)", req.Method, req.URL.String(), resp.StatusCode, duration)
51+
level.Debug(t.l).Log("msg", fmt.Sprintf("%s %s -> %d (%s)", req.Method, req.URL.String(), resp.StatusCode, duration))
5052
} else {
5153
t.mResponses.WithLabelValues("err").Observe(duration.Seconds())
52-
t.l.Errorf("%s %s -> %s (%s)", req.Method, req.URL.String(), err, duration)
54+
level.Error(t.l).Log("msg", fmt.Sprintf("%s %s -> %s (%s)", req.Method, req.URL.String(), err, duration))
5355
}
5456
return resp, err
5557
}

enhanced/collector.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package enhanced
22

33
import (
44
"context"
5+
"fmt"
56
"sync"
67
"time"
78

9+
"github.com/go-kit/log"
10+
"github.com/go-kit/log/level"
811
"github.com/prometheus/client_golang/prometheus"
9-
"github.com/prometheus/common/log"
1012

1113
"github.com/percona/rds_exporter/sessions"
1214
)
@@ -27,15 +29,15 @@ const (
2729
)
2830

2931
// NewCollector creates new collector and starts scrapers.
30-
func NewCollector(sessions *sessions.Sessions) *Collector {
32+
func NewCollector(sessions *sessions.Sessions, logger log.Logger) *Collector {
3133
c := &Collector{
3234
sessions: sessions,
33-
logger: log.With("component", "enhanced"),
35+
logger: log.With(logger, "component", "enhanced"),
3436
metrics: make(map[string][]prometheus.Metric),
3537
}
3638

3739
for session, instances := range sessions.AllSessions() {
38-
s := newScraper(session, instances)
40+
s := newScraper(session, instances, logger)
3941

4042
interval := maxInterval
4143
for _, instance := range instances {
@@ -46,7 +48,7 @@ func NewCollector(sessions *sessions.Sessions) *Collector {
4648
if interval < minInterval {
4749
interval = minInterval
4850
}
49-
s.logger.Infof("Updating enhanced metrics every %s.", interval)
51+
level.Info(s.logger).Log("msg", fmt.Sprintf("Updating enhanced metrics every %s.", interval))
5052

5153
// perform first scrapes synchronously so returned collector has all metric descriptions
5254
m, _ := s.scrape(context.TODO())

enhanced/scraper.go

+16-13
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import (
88
"github.com/aws/aws-sdk-go/aws"
99
"github.com/aws/aws-sdk-go/aws/session"
1010
"github.com/aws/aws-sdk-go/service/cloudwatchlogs"
11+
"github.com/go-kit/log"
12+
"github.com/go-kit/log/level"
1113
"github.com/prometheus/client_golang/prometheus"
12-
"github.com/prometheus/common/log"
1314

1415
"github.com/percona/rds_exporter/sessions"
1516
)
@@ -25,7 +26,7 @@ type scraper struct {
2526
testDisallowUnknownFields bool // for tests only
2627
}
2728

28-
func newScraper(session *session.Session, instances []sessions.Instance) *scraper {
29+
func newScraper(session *session.Session, instances []sessions.Instance, logger log.Logger) *scraper {
2930
logStreamNames := make([]string, 0, len(instances))
3031
for _, instance := range instances {
3132
logStreamNames = append(logStreamNames, instance.ResourceID)
@@ -36,7 +37,7 @@ func newScraper(session *session.Session, instances []sessions.Instance) *scrape
3637
logStreamNames: logStreamNames,
3738
svc: cloudwatchlogs.New(session),
3839
nextStartTime: time.Now().Add(-3 * time.Minute).Round(0), // strip monotonic clock reading
39-
logger: log.With("component", "enhanced"),
40+
logger: log.With(logger, "component", "enhanced"),
4041
}
4142
}
4243

@@ -82,14 +83,16 @@ func (s *scraper) scrape(ctx context.Context) (map[string][]prometheus.Metric, m
8283
StartTime: aws.Int64(aws.TimeUnixMilli(s.nextStartTime)),
8384
}
8485

85-
s.logger.With("next_start", s.nextStartTime.UTC()).With("since_last", time.Since(s.nextStartTime)).Debugf("Requesting metrics")
86+
level.Debug(log.With(s.logger, "next_start", s.nextStartTime.UTC(), "since_last", time.Since(s.nextStartTime))).Log("msg", "Requesting metrics")
8687

8788
// collect all returned events and metrics/messages
8889
collectAllMetrics := func(output *cloudwatchlogs.FilterLogEventsOutput, lastPage bool) bool {
8990
for _, event := range output.Events {
90-
l := s.logger.With("EventId", *event.EventId).With("LogStreamName", *event.LogStreamName)
91-
l = l.With("Timestamp", aws.MillisecondsTimeValue(event.Timestamp).UTC())
92-
l = l.With("IngestionTime", aws.MillisecondsTimeValue(event.IngestionTime).UTC())
91+
l := log.With(s.logger,
92+
"EventId", *event.EventId,
93+
"LogStreamName", *event.LogStreamName,
94+
"Timestamp", aws.MillisecondsTimeValue(event.Timestamp).UTC(),
95+
"IngestionTime", aws.MillisecondsTimeValue(event.IngestionTime).UTC())
9396

9497
var instance *sessions.Instance
9598
for _, i := range s.instances {
@@ -99,15 +102,15 @@ func (s *scraper) scrape(ctx context.Context) (map[string][]prometheus.Metric, m
99102
}
100103
}
101104
if instance == nil {
102-
l.Errorf("Failed to find instance.")
105+
level.Error(l).Log("msg", "Failed to find instance.")
103106
continue
104107
}
105108

106109
if instance.DisableEnhancedMetrics {
107-
l.Debugf("Enhanced Metrics are disabled for instance %v.", instance)
110+
level.Debug(l).Log("msg", fmt.Sprintf("Enhanced Metrics are disabled for instance %v.", instance))
108111
continue
109112
}
110-
l = l.With("region", instance.Region).With("instance", instance.Instance)
113+
l = log.With(l, "region", instance.Region, "instance", instance.Instance)
111114

112115
// l.Debugf("Message:\n%s", *event.Message)
113116
osMetrics, err := parseOSMetrics([]byte(*event.Message), s.testDisallowUnknownFields)
@@ -117,13 +120,13 @@ func (s *scraper) scrape(ctx context.Context) (map[string][]prometheus.Metric, m
117120
panic(fmt.Sprintf("New metrics should be added: %s", err))
118121
}
119122

120-
l.Errorf("Failed to parse metrics: %s.", err)
123+
level.Error(l).Log("msg", "Failed to parse metrics.", "error", err)
121124
continue
122125
}
123126
// l.Debugf("OS Metrics:\n%#v", osMetrics)
124127

125128
timestamp := aws.MillisecondsTimeValue(event.Timestamp).UTC()
126-
l.Debugf("Timestamp from message: %s; from event: %s.", osMetrics.Timestamp.UTC(), timestamp)
129+
level.Debug(l).Log("msg", fmt.Sprintf("Timestamp from message: %s; from event: %s.", osMetrics.Timestamp.UTC(), timestamp))
127130

128131
if allMetrics[instance.ResourceID] == nil {
129132
allMetrics[instance.ResourceID] = make(map[time.Time][]prometheus.Metric)
@@ -139,7 +142,7 @@ func (s *scraper) scrape(ctx context.Context) (map[string][]prometheus.Metric, m
139142
return true // continue pagination
140143
}
141144
if err := s.svc.FilterLogEventsPagesWithContext(ctx, input, collectAllMetrics); err != nil {
142-
s.logger.Errorf("Failed to filter log events: %s.", err)
145+
level.Error(s.logger).Log("msg", "Failed to filter log events.", "error", err)
143146
}
144147
}
145148
// get better times

enhanced/scraper_test.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"time"
1010

1111
"github.com/percona/exporter_shared/helpers"
12+
"github.com/prometheus/common/promlog"
1213
"github.com/stretchr/testify/assert"
1314
"github.com/stretchr/testify/require"
1415

@@ -40,15 +41,16 @@ func filterMetrics(metrics []*helpers.Metric) []*helpers.Metric {
4041
func TestScraper(t *testing.T) {
4142
cfg, err := config.Load("../config.tests.yml")
4243
require.NoError(t, err)
43-
client := client.New()
44-
sess, err := sessions.New(cfg.Instances, client.HTTP(), false)
44+
logger := promlog.New(&promlog.Config{})
45+
client := client.New(logger)
46+
sess, err := sessions.New(cfg.Instances, client.HTTP(), logger, false)
4547
require.NoError(t, err)
4648

4749
for session, instances := range sess.AllSessions() {
4850
session, instances := session, instances
4951
t.Run(fmt.Sprint(instances), func(t *testing.T) {
5052
// test that there are no new metrics
51-
s := newScraper(session, instances)
53+
s := newScraper(session, instances, logger)
5254
s.testDisallowUnknownFields = true
5355
metrics, messages := s.scrape(context.Background())
5456
require.Len(t, metrics, len(instances))
@@ -139,14 +141,15 @@ func TestBetterTimes(t *testing.T) {
139141
func TestScraperDisableEnhancedMetrics(t *testing.T) {
140142
cfg, err := config.Load("../config.tests.yml")
141143
require.NoError(t, err)
142-
client := client.New()
144+
logger := promlog.New(&promlog.Config{})
145+
client := client.New(logger)
143146
for i := range cfg.Instances {
144147
// Disable enhanced metrics in even instances.
145148
// This disable instance: no-such-instance.
146149
isDisabled := i%2 == 0
147150
cfg.Instances[i].DisableEnhancedMetrics = isDisabled
148151
}
149-
sess, err := sessions.New(cfg.Instances, client.HTTP(), false)
152+
sess, err := sessions.New(cfg.Instances, client.HTTP(), logger, false)
150153
require.NoError(t, err)
151154

152155
// Check if all collected metrics do not contain metrics for instance with disabled metrics.
@@ -162,7 +165,7 @@ func TestScraperDisableEnhancedMetrics(t *testing.T) {
162165
for session, instances := range sess.AllSessions() {
163166
session, instances := session, instances
164167
t.Run(fmt.Sprint(instances), func(t *testing.T) {
165-
s := newScraper(session, instances)
168+
s := newScraper(session, instances, logger)
166169
s.testDisallowUnknownFields = true
167170
metrics, _ := s.scrape(context.Background())
168171

0 commit comments

Comments
 (0)