Skip to content

Commit ff9d8a7

Browse files
committed
Use proto rules API instead of struct; Added rulesAPI RPC to sidecar.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
1 parent 0c9bbb8 commit ff9d8a7

File tree

22 files changed

+864
-697
lines changed

22 files changed

+864
-697
lines changed

cmd/thanos/query.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ func runQuery(
368368
return errors.Wrap(err, "setup gRPC server")
369369
}
370370

371-
s := grpcserver.New(logger, reg, tracer, comp, grpcProbe, proxy,
371+
// TODO: Add rules API implementation when ready.
372+
s := grpcserver.New(logger, reg, tracer, comp, grpcProbe, proxy, nil,
372373
grpcserver.WithListen(grpcBindAddr),
373374
grpcserver.WithGracePeriod(grpcGracePeriod),
374375
grpcserver.WithTLSConfig(tlsCfg),

cmd/thanos/rule.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,8 @@ func runRule(
538538
return errors.Wrap(err, "setup gRPC server")
539539
}
540540

541-
s := grpcserver.New(logger, reg, tracer, comp, grpcProbe, store,
541+
// TODO: Add rules API implementation when ready.
542+
s := grpcserver.New(logger, reg, tracer, comp, grpcProbe, store, nil,
542543
grpcserver.WithListen(grpcBindAddr),
543544
grpcserver.WithGracePeriod(grpcGracePeriod),
544545
grpcserver.WithTLSConfig(tlsCfg),
@@ -709,7 +710,7 @@ func queryFunc(
709710

710711
promClients := make([]*promclient.Client, 0, len(queriers))
711712
for _, q := range queriers {
712-
promClients = append(promClients, promclient.NewClient(logger, q))
713+
promClients = append(promClients, promclient.NewClient(q, logger, "thanos-rule"))
713714
}
714715

715716
return func(ctx context.Context, q string, t time.Time) (promql.Vector, error) {

cmd/thanos/sidecar.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ func runSidecar(
144144
maxt: math.MaxInt64,
145145

146146
limitMinTime: limitMinTime,
147+
client: promclient.NewWithTracingClient(logger, "thanos-sidecar"),
147148
}
148149

149150
confContentYaml, err := objStoreConfig.Content()
@@ -198,15 +199,15 @@ func runSidecar(
198199
// Only check Prometheus's flags when upload is enabled.
199200
if uploads {
200201
// Check prometheus's flags to ensure sane sidecar flags.
201-
if err := validatePrometheus(ctx, logger, ignoreBlockSize, m); err != nil {
202+
if err := validatePrometheus(ctx, m.client, logger, ignoreBlockSize, m); err != nil {
202203
return errors.Wrap(err, "validate Prometheus flags")
203204
}
204205
}
205206

206207
// Blocking query of external labels before joining as a Source Peer into gossip.
207208
// We retry infinitely until we reach and fetch labels from our Prometheus.
208209
err := runutil.Retry(2*time.Second, ctx.Done(), func() error {
209-
if err := m.UpdateLabels(ctx, logger); err != nil {
210+
if err := m.UpdateLabels(ctx); err != nil {
210211
level.Warn(logger).Log(
211212
"msg", "failed to fetch initial external labels. Is Prometheus running? Retrying",
212213
"err", err,
@@ -239,7 +240,7 @@ func runSidecar(
239240
iterCtx, iterCancel := context.WithTimeout(context.Background(), 5*time.Second)
240241
defer iterCancel()
241242

242-
if err := m.UpdateLabels(iterCtx, logger); err != nil {
243+
if err := m.UpdateLabels(iterCtx); err != nil {
243244
level.Warn(logger).Log("msg", "heartbeat failed", "err", err)
244245
promUp.Set(0)
245246
} else {
@@ -278,7 +279,7 @@ func runSidecar(
278279
return errors.Wrap(err, "setup gRPC server")
279280
}
280281

281-
s := grpcserver.New(logger, reg, tracer, comp, grpcProbe, promStore,
282+
s := grpcserver.New(logger, reg, tracer, comp, grpcProbe, promStore, promStore,
282283
grpcserver.WithListen(grpcBindAddr),
283284
grpcserver.WithGracePeriod(grpcGracePeriod),
284285
grpcserver.WithTLSConfig(tlsCfg),
@@ -356,14 +357,14 @@ func runSidecar(
356357
return nil
357358
}
358359

359-
func validatePrometheus(ctx context.Context, logger log.Logger, ignoreBlockSize bool, m *promMetadata) error {
360+
func validatePrometheus(ctx context.Context, client *promclient.Client, logger log.Logger, ignoreBlockSize bool, m *promMetadata) error {
360361
var (
361362
flagErr error
362363
flags promclient.Flags
363364
)
364365

365366
if err := runutil.Retry(2*time.Second, ctx.Done(), func() error {
366-
if flags, flagErr = promclient.ConfiguredFlags(ctx, logger, m.promURL); flagErr != nil && flagErr != promclient.ErrFlagEndpointNotFound {
367+
if flags, flagErr = client.ConfiguredFlags(ctx, m.promURL); flagErr != nil && flagErr != promclient.ErrFlagEndpointNotFound {
367368
level.Warn(logger).Log("msg", "failed to get Prometheus flags. Is Prometheus running? Retrying", "err", flagErr)
368369
return errors.Wrapf(flagErr, "fetch Prometheus flags")
369370
}
@@ -402,10 +403,12 @@ type promMetadata struct {
402403
labels labels.Labels
403404

404405
limitMinTime thanosmodel.TimeOrDurationValue
406+
407+
client *promclient.Client
405408
}
406409

407-
func (s *promMetadata) UpdateLabels(ctx context.Context, logger log.Logger) error {
408-
elset, err := promclient.ExternalLabels(ctx, logger, s.promURL)
410+
func (s *promMetadata) UpdateLabels(ctx context.Context) error {
411+
elset, err := s.client.ExternalLabels(ctx, s.promURL)
409412
if err != nil {
410413
return err
411414
}

cmd/thanos/store.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ func runStore(
295295
return errors.Wrap(err, "setup gRPC server")
296296
}
297297

298-
s := grpcserver.New(logger, reg, tracer, component, grpcProbe, bs,
298+
s := grpcserver.New(logger, reg, tracer, component, grpcProbe, bs, nil,
299299
grpcserver.WithListen(grpcBindAddr),
300300
grpcserver.WithGracePeriod(grpcGracePeriod),
301301
grpcserver.WithTLSConfig(tlsCfg),

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ require (
1818
github.com/go-kit/kit v0.9.0
1919
github.com/go-openapi/strfmt v0.19.2
2020
github.com/gogo/protobuf v1.3.1
21+
github.com/gogo/status v1.0.3
2122
github.com/golang/snappy v0.0.1
2223
github.com/googleapis/gax-go v2.0.2+incompatible
2324
github.com/gophercloud/gophercloud v0.6.0
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
// Copyright (c) The Thanos Authors.
22
// Licensed under the Apache License 2.0.
33

4-
package store
4+
package promclient
55

66
import (
77
"github.com/pkg/errors"
88
"github.com/prometheus/prometheus/pkg/labels"
99
"github.com/thanos-io/thanos/pkg/store/storepb"
1010
)
1111

12-
func translateMatcher(m storepb.LabelMatcher) (*labels.Matcher, error) {
12+
func TranslateMatcher(m storepb.LabelMatcher) (*labels.Matcher, error) {
1313
switch m.Type {
1414
case storepb.LabelMatcher_EQ:
1515
return labels.NewMatcher(labels.MatchEqual, m.Name, m.Value)
@@ -26,9 +26,9 @@ func translateMatcher(m storepb.LabelMatcher) (*labels.Matcher, error) {
2626
return nil, errors.Errorf("unknown label matcher type %d", m.Type)
2727
}
2828

29-
func translateMatchers(ms []storepb.LabelMatcher) (res []*labels.Matcher, err error) {
29+
func TranslateMatchers(ms []storepb.LabelMatcher) (res []*labels.Matcher, err error) {
3030
for _, m := range ms {
31-
r, err := translateMatcher(m)
31+
r, err := TranslateMatcher(m)
3232
if err != nil {
3333
return nil, err
3434
}
@@ -40,7 +40,7 @@ func translateMatchers(ms []storepb.LabelMatcher) (res []*labels.Matcher, err er
4040
// matchersToString converts label matchers to string format.
4141
func matchersToString(ms []storepb.LabelMatcher) (string, error) {
4242
var res string
43-
matchers, err := translateMatchers(ms)
43+
matchers, err := TranslateMatchers(ms)
4444
if err != nil {
4545
return "", err
4646
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) The Thanos Authors.
22
// Licensed under the Apache License 2.0.
33

4-
package store
4+
package promclient
55

66
import (
77
"testing"

0 commit comments

Comments
 (0)