Skip to content

Commit 6252335

Browse files
authored
Update prometheus to latest (#763)
* Update prometheus to latest * Upgrade to Go 1.10 * Fix up for API changes * Update prometheus tsdb * Update promql.NewEngine and v1.NewAPI * Create querier.Config * Reuse ruler config for ruler querier engine * Clarify passing no flags map to NewEngine() * Update Gopkg.lock
1 parent e6c4db0 commit 6252335

Some content is hidden

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

79 files changed

+1061
-603
lines changed

Gopkg.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
name = "github.com/prometheus/prometheus"
2020
branch = "master"
2121

22+
[[constraint]]
23+
name = "github.com/prometheus/tsdb"
24+
branch = "master"
25+
2226
[[override]]
2327
name = "k8s.io/client-go"
2428
revision = "3627aeb7d4f6ade38f995d2c923e459146493c7e"

build-image/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1.9.3-stretch
1+
FROM golang:1.10.0-stretch
22
RUN apt-get update && apt-get install -y python-requests python-yaml file jq unzip protobuf-compiler libprotobuf-dev && \
33
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
44
RUN go clean -i net && \

cmd/lite/main.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/prometheus/client_golang/prometheus"
1212
"github.com/prometheus/common/route"
1313
"github.com/prometheus/prometheus/config"
14-
"github.com/prometheus/prometheus/promql"
1514
"github.com/prometheus/prometheus/web/api/v1"
1615
"github.com/prometheus/tsdb"
1716
"google.golang.org/grpc"
@@ -42,6 +41,7 @@ func main() {
4241

4342
chunkStoreConfig chunk.StoreConfig
4443
distributorConfig distributor.Config
44+
querierConfig querier.Config
4545
ingesterConfig ingester.Config
4646
configStoreConfig ruler.ConfigStoreConfig
4747
rulerConfig ruler.Config
@@ -53,7 +53,7 @@ func main() {
5353
)
5454
// Ingester needs to know our gRPC listen port.
5555
ingesterConfig.ListenPort = &serverConfig.GRPCListenPort
56-
util.RegisterFlags(&serverConfig, &chunkStoreConfig, &distributorConfig,
56+
util.RegisterFlags(&serverConfig, &chunkStoreConfig, &distributorConfig, &querierConfig,
5757
&ingesterConfig, &configStoreConfig, &rulerConfig, &storageConfig, &schemaConfig, &logLevel)
5858
flag.BoolVar(&unauthenticated, "unauthenticated", false, "Set to true to disable multitenancy.")
5959
flag.Parse()
@@ -123,13 +123,15 @@ func main() {
123123
tableManager.Start()
124124
defer tableManager.Stop()
125125

126+
engine, queryable := querier.NewEngine(dist, chunkStore, nil, querierConfig.MaxConcurrent, querierConfig.Timeout)
127+
126128
if configStoreConfig.ConfigsAPIURL.String() != "" || configStoreConfig.DBConfig.URI != "" {
127129
rulesAPI, err := ruler.NewRulesAPI(configStoreConfig)
128130
if err != nil {
129131
level.Error(util.Logger).Log("msg", "error initializing ruler config store", "err", err)
130132
os.Exit(1)
131133
}
132-
rlr, err := ruler.NewRuler(rulerConfig, dist, chunkStore)
134+
rlr, err := ruler.NewRuler(rulerConfig, engine, queryable, dist)
133135
if err != nil {
134136
level.Error(util.Logger).Log("msg", "error initializing ruler", "err", err)
135137
os.Exit(1)
@@ -147,13 +149,13 @@ func main() {
147149
sampleQueryable := querier.NewQueryable(dist, chunkStore, false)
148150
metadataQueryable := querier.NewQueryable(dist, chunkStore, true)
149151

150-
engine := promql.NewEngine(sampleQueryable, nil)
151152
api := v1.NewAPI(
152153
engine,
153154
metadataQueryable,
154155
querier.DummyTargetRetriever{},
155156
querier.DummyAlertmanagerRetriever{},
156157
func() config.Config { return config.Config{} },
158+
nil, // flags to be served via http; we don't need this
157159
func(f http.HandlerFunc) http.HandlerFunc { return f },
158160
func() *tsdb.DB { return nil }, // Only needed for admin APIs.
159161
false, // Disable admin APIs.

cmd/querier/main.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ func main() {
3636
}
3737
ringConfig ring.Config
3838
distributorConfig distributor.Config
39+
querierConfig querier.Config
3940
chunkStoreConfig chunk.StoreConfig
4041
schemaConfig chunk.SchemaConfig
4142
storageConfig storage.Config
4243
logLevel util.LogLevel
4344
)
44-
util.RegisterFlags(&serverConfig, &ringConfig, &distributorConfig,
45+
util.RegisterFlags(&serverConfig, &ringConfig, &distributorConfig, &querierConfig,
4546
&chunkStoreConfig, &schemaConfig, &storageConfig, &logLevel)
4647
flag.Parse()
4748

@@ -90,13 +91,14 @@ func main() {
9091
sampleQueryable := querier.NewQueryable(dist, chunkStore, false)
9192
metadataQueryable := querier.NewQueryable(dist, chunkStore, true)
9293

93-
engine := promql.NewEngine(sampleQueryable, nil)
94+
engine := promql.NewEngine(util.Logger, nil, querierConfig.MaxConcurrent, querierConfig.Timeout)
9495
api := v1.NewAPI(
9596
engine,
9697
metadataQueryable,
9798
querier.DummyTargetRetriever{},
9899
querier.DummyAlertmanagerRetriever{},
99100
func() config.Config { return config.Config{} },
101+
nil, // flags to be served via http; we don't need this
100102
func(f http.HandlerFunc) http.HandlerFunc { return f },
101103
func() *tsdb.DB { return nil }, // Only needed for admin APIs.
102104
false, // Disable admin APIs.

cmd/ruler/main.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/weaveworks/cortex/pkg/chunk"
1515
"github.com/weaveworks/cortex/pkg/chunk/storage"
1616
"github.com/weaveworks/cortex/pkg/distributor"
17+
"github.com/weaveworks/cortex/pkg/querier"
1718
"github.com/weaveworks/cortex/pkg/ring"
1819
"github.com/weaveworks/cortex/pkg/ruler"
1920
"github.com/weaveworks/cortex/pkg/util"
@@ -75,7 +76,8 @@ func main() {
7576
defer dist.Stop()
7677
prometheus.MustRegister(dist)
7778

78-
rlr, err := ruler.NewRuler(rulerConfig, dist, chunkStore)
79+
engine, queryable := querier.NewEngine(dist, chunkStore, prometheus.DefaultRegisterer, rulerConfig.NumWorkers, rulerConfig.GroupTimeout)
80+
rlr, err := ruler.NewRuler(rulerConfig, engine, queryable, dist)
7981
if err != nil {
8082
level.Error(util.Logger).Log("msg", "error initializing ruler", "err", err)
8183
os.Exit(1)

pkg/querier/dummy.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,14 @@ type DummyTargetRetriever struct{}
1212
// Targets implements TargetRetriever.
1313
func (r DummyTargetRetriever) Targets() []*scrape.Target { return nil }
1414

15+
// DroppedTargets implements TargetRetriever.
16+
func (r DummyTargetRetriever) DroppedTargets() []*scrape.Target { return nil }
17+
1518
// DummyAlertmanagerRetriever implements AlertmanagerRetriever.
1619
type DummyAlertmanagerRetriever struct{}
1720

1821
// Alertmanagers implements AlertmanagerRetriever.
1922
func (r DummyAlertmanagerRetriever) Alertmanagers() []*url.URL { return nil }
23+
24+
// DroppedAlertmanagers implements AlertmanagerRetriever.
25+
func (r DummyAlertmanagerRetriever) DroppedAlertmanagers() []*url.URL { return nil }

pkg/querier/querier.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,45 @@ package querier
22

33
import (
44
"context"
5+
"flag"
56
"net/http"
7+
"time"
68

79
"github.com/go-kit/kit/log/level"
10+
"github.com/prometheus/client_golang/prometheus"
811
"github.com/prometheus/common/model"
912
"github.com/prometheus/prometheus/pkg/labels"
1013
"github.com/prometheus/prometheus/promql"
1114
"github.com/prometheus/prometheus/storage"
15+
1216
"github.com/weaveworks/cortex/pkg/ingester/client"
1317
"github.com/weaveworks/cortex/pkg/prom1/storage/metric"
1418

1519
"github.com/weaveworks/cortex/pkg/util"
1620
)
1721

22+
// Config contains the configuration require to create a querier
23+
type Config struct {
24+
MaxConcurrent int
25+
Timeout time.Duration
26+
}
27+
28+
// RegisterFlags adds the flags required to config this to the given FlagSet
29+
func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
30+
flag.IntVar(&cfg.MaxConcurrent, "querier.max-concurrent", 20, "The maximum number of concurrent queries.")
31+
flag.DurationVar(&cfg.Timeout, "querier.timeout", 2*time.Minute, "The timeout for a query.")
32+
}
33+
1834
// ChunkStore is the interface we need to get chunks
1935
type ChunkStore interface {
2036
Get(ctx context.Context, from, through model.Time, matchers ...*labels.Matcher) (model.Matrix, error)
2137
}
2238

2339
// NewEngine creates a new promql.Engine for cortex.
24-
func NewEngine(distributor Querier, chunkStore ChunkStore) *promql.Engine {
40+
func NewEngine(distributor Querier, chunkStore ChunkStore, reg prometheus.Registerer, maxConcurrent int, timeout time.Duration) (*promql.Engine, storage.Queryable) {
2541
queryable := NewQueryable(distributor, chunkStore, false)
26-
return promql.NewEngine(queryable, nil)
42+
engine := promql.NewEngine(util.Logger, reg, maxConcurrent, timeout)
43+
return engine, queryable
2744
}
2845

2946
// NewQueryable creates a new Queryable for cortex.
@@ -195,7 +212,7 @@ type mergeQuerier struct {
195212
metadataOnly bool
196213
}
197214

198-
func (mq mergeQuerier) Select(matchers ...*labels.Matcher) (storage.SeriesSet, error) {
215+
func (mq mergeQuerier) Select(_ *storage.SelectParams, matchers ...*labels.Matcher) (storage.SeriesSet, error) {
199216
// TODO: Update underlying selectors to return errors directly.
200217
if mq.metadataOnly {
201218
return mq.selectMetadata(matchers...), nil

pkg/querier/querier_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func TestMergeQuerierSortsMetricLabels(t *testing.T) {
110110
}
111111
m, err := labels.NewMatcher(labels.MatchEqual, model.MetricNameLabel, "testmetric")
112112
require.NoError(t, err)
113-
ss, err := mq.Select(m)
113+
ss, err := mq.Select(nil, m)
114114
require.NoError(t, err)
115115
require.NoError(t, ss.Err())
116116
ss.Next()

pkg/ruler/ruler.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,15 @@ import (
2626
"github.com/prometheus/prometheus/notifier"
2727
"github.com/prometheus/prometheus/promql"
2828
"github.com/prometheus/prometheus/rules"
29+
"github.com/prometheus/prometheus/storage"
2930
"github.com/prometheus/prometheus/util/strutil"
3031
"golang.org/x/net/context"
3132
"golang.org/x/net/context/ctxhttp"
3233

3334
"github.com/weaveworks/common/instrument"
3435
"github.com/weaveworks/common/user"
35-
"github.com/weaveworks/cortex/pkg/chunk"
3636
"github.com/weaveworks/cortex/pkg/configs"
3737
"github.com/weaveworks/cortex/pkg/distributor"
38-
"github.com/weaveworks/cortex/pkg/querier"
3938
"github.com/weaveworks/cortex/pkg/util"
4039
)
4140

@@ -123,6 +122,7 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
123122
// Ruler evaluates rules.
124123
type Ruler struct {
125124
engine *promql.Engine
125+
queryable storage.Queryable
126126
pusher Pusher
127127
alertURL *url.URL
128128
notifierCfg *config.Config
@@ -196,13 +196,14 @@ func (rn *rulerNotifier) stop() {
196196
}
197197

198198
// NewRuler creates a new ruler from a distributor and chunk store.
199-
func NewRuler(cfg Config, d *distributor.Distributor, c *chunk.Store) (*Ruler, error) {
199+
func NewRuler(cfg Config, engine *promql.Engine, queryable storage.Queryable, d *distributor.Distributor) (*Ruler, error) {
200200
ncfg, err := buildNotifierConfig(&cfg)
201201
if err != nil {
202202
return nil, err
203203
}
204204
return &Ruler{
205-
engine: querier.NewEngine(d, c),
205+
engine: engine,
206+
queryable: queryable,
206207
pusher: d,
207208
alertURL: cfg.ExternalURL.URL,
208209
notifierCfg: ncfg,
@@ -283,7 +284,7 @@ func (r *Ruler) newGroup(ctx context.Context, userID string, item *workItem) (*r
283284
}
284285
opts := &rules.ManagerOptions{
285286
Appendable: appendable,
286-
QueryFunc: rules.EngineQueryFunc(r.engine),
287+
QueryFunc: rules.EngineQueryFunc(r.engine, r.queryable),
287288
Context: ctx,
288289
ExternalURL: r.alertURL,
289290
NotifyFunc: sendAlerts(notifier, r.alertURL.String()),

pkg/ruler/ruler_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/prometheus/prometheus/notifier"
1414
"github.com/stretchr/testify/assert"
1515
"github.com/weaveworks/common/user"
16+
"github.com/weaveworks/cortex/pkg/querier"
1617
)
1718

1819
func newTestRuler(t *testing.T, alertmanagerURL string) *Ruler {
@@ -25,7 +26,9 @@ func newTestRuler(t *testing.T, alertmanagerURL string) *Ruler {
2526

2627
// TODO: Populate distributor and chunk store arguments to enable
2728
// other kinds of tests.
28-
ruler, err := NewRuler(cfg, nil, nil)
29+
30+
engine, queryable := querier.NewEngine(nil, nil, nil, 20, 2*time.Minute)
31+
ruler, err := NewRuler(cfg, engine, queryable, nil)
2932
if err != nil {
3033
t.Fatal(err)
3134
}

vendor/github.com/prometheus/prometheus/config/config.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/prometheus/prometheus/discovery/azure/azure.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/prometheus/prometheus/discovery/dns/dns.go

Lines changed: 6 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)