Skip to content

Update prometheus to latest #763

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Apr 6, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
name = "github.com/prometheus/prometheus"
branch = "master"

[[constraint]]
name = "github.com/prometheus/tsdb"
branch = "master"

[[override]]
name = "k8s.io/client-go"
revision = "3627aeb7d4f6ade38f995d2c923e459146493c7e"
Expand Down
2 changes: 1 addition & 1 deletion build-image/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM golang:1.9.3-stretch
FROM golang:1.10.0-stretch
RUN apt-get update && apt-get install -y python-requests python-yaml file jq unzip protobuf-compiler libprotobuf-dev && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN go clean -i net && \
Expand Down
10 changes: 6 additions & 4 deletions cmd/lite/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/common/route"
"github.com/prometheus/prometheus/config"
"github.com/prometheus/prometheus/promql"
"github.com/prometheus/prometheus/web/api/v1"
"github.com/prometheus/tsdb"
"google.golang.org/grpc"
Expand Down Expand Up @@ -42,6 +41,7 @@ func main() {

chunkStoreConfig chunk.StoreConfig
distributorConfig distributor.Config
querierConfig querier.Config
ingesterConfig ingester.Config
configStoreConfig ruler.ConfigStoreConfig
rulerConfig ruler.Config
Expand All @@ -53,7 +53,7 @@ func main() {
)
// Ingester needs to know our gRPC listen port.
ingesterConfig.ListenPort = &serverConfig.GRPCListenPort
util.RegisterFlags(&serverConfig, &chunkStoreConfig, &distributorConfig,
util.RegisterFlags(&serverConfig, &chunkStoreConfig, &distributorConfig, &querierConfig,
&ingesterConfig, &configStoreConfig, &rulerConfig, &storageConfig, &schemaConfig, &logLevel)
flag.BoolVar(&unauthenticated, "unauthenticated", false, "Set to true to disable multitenancy.")
flag.Parse()
Expand Down Expand Up @@ -123,13 +123,15 @@ func main() {
tableManager.Start()
defer tableManager.Stop()

engine, queryable := querier.NewEngine(dist, chunkStore, nil, querierConfig.MaxConcurrent, querierConfig.Timeout)

if configStoreConfig.ConfigsAPIURL.String() != "" || configStoreConfig.DBConfig.URI != "" {
rulesAPI, err := ruler.NewRulesAPI(configStoreConfig)
if err != nil {
level.Error(util.Logger).Log("msg", "error initializing ruler config store", "err", err)
os.Exit(1)
}
rlr, err := ruler.NewRuler(rulerConfig, dist, chunkStore)
rlr, err := ruler.NewRuler(rulerConfig, engine, queryable, dist)
if err != nil {
level.Error(util.Logger).Log("msg", "error initializing ruler", "err", err)
os.Exit(1)
Expand All @@ -147,13 +149,13 @@ func main() {
sampleQueryable := querier.NewQueryable(dist, chunkStore, false)
metadataQueryable := querier.NewQueryable(dist, chunkStore, true)

engine := promql.NewEngine(sampleQueryable, nil)
api := v1.NewAPI(
engine,
metadataQueryable,
querier.DummyTargetRetriever{},
querier.DummyAlertmanagerRetriever{},
func() config.Config { return config.Config{} },
nil, // flags to be served via http; we don't need this
func(f http.HandlerFunc) http.HandlerFunc { return f },
func() *tsdb.DB { return nil }, // Only needed for admin APIs.
false, // Disable admin APIs.
Expand Down
6 changes: 4 additions & 2 deletions cmd/querier/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,13 @@ func main() {
}
ringConfig ring.Config
distributorConfig distributor.Config
querierConfig querier.Config
chunkStoreConfig chunk.StoreConfig
schemaConfig chunk.SchemaConfig
storageConfig storage.Config
logLevel util.LogLevel
)
util.RegisterFlags(&serverConfig, &ringConfig, &distributorConfig,
util.RegisterFlags(&serverConfig, &ringConfig, &distributorConfig, &querierConfig,
&chunkStoreConfig, &schemaConfig, &storageConfig, &logLevel)
flag.Parse()

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

engine := promql.NewEngine(sampleQueryable, nil)
engine := promql.NewEngine(util.Logger, nil, querierConfig.MaxConcurrent, querierConfig.Timeout)
api := v1.NewAPI(
engine,
metadataQueryable,
querier.DummyTargetRetriever{},
querier.DummyAlertmanagerRetriever{},
func() config.Config { return config.Config{} },
nil, // flags to be served via http; we don't need this
func(f http.HandlerFunc) http.HandlerFunc { return f },
func() *tsdb.DB { return nil }, // Only needed for admin APIs.
false, // Disable admin APIs.
Expand Down
4 changes: 3 additions & 1 deletion cmd/ruler/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"github.com/weaveworks/cortex/pkg/chunk"
"github.com/weaveworks/cortex/pkg/chunk/storage"
"github.com/weaveworks/cortex/pkg/distributor"
"github.com/weaveworks/cortex/pkg/querier"
"github.com/weaveworks/cortex/pkg/ring"
"github.com/weaveworks/cortex/pkg/ruler"
"github.com/weaveworks/cortex/pkg/util"
Expand Down Expand Up @@ -75,7 +76,8 @@ func main() {
defer dist.Stop()
prometheus.MustRegister(dist)

rlr, err := ruler.NewRuler(rulerConfig, dist, chunkStore)
engine, queryable := querier.NewEngine(dist, chunkStore, prometheus.DefaultRegisterer, rulerConfig.NumWorkers, rulerConfig.GroupTimeout)
rlr, err := ruler.NewRuler(rulerConfig, engine, queryable, dist)
if err != nil {
level.Error(util.Logger).Log("msg", "error initializing ruler", "err", err)
os.Exit(1)
Expand Down
6 changes: 6 additions & 0 deletions pkg/querier/dummy.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,14 @@ type DummyTargetRetriever struct{}
// Targets implements TargetRetriever.
func (r DummyTargetRetriever) Targets() []*scrape.Target { return nil }

// DroppedTargets implements TargetRetriever.
func (r DummyTargetRetriever) DroppedTargets() []*scrape.Target { return nil }

// DummyAlertmanagerRetriever implements AlertmanagerRetriever.
type DummyAlertmanagerRetriever struct{}

// Alertmanagers implements AlertmanagerRetriever.
func (r DummyAlertmanagerRetriever) Alertmanagers() []*url.URL { return nil }

// DroppedAlertmanagers implements AlertmanagerRetriever.
func (r DummyAlertmanagerRetriever) DroppedAlertmanagers() []*url.URL { return nil }
23 changes: 20 additions & 3 deletions pkg/querier/querier.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,45 @@ package querier

import (
"context"
"flag"
"net/http"
"time"

"github.com/go-kit/kit/log/level"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/common/model"
"github.com/prometheus/prometheus/pkg/labels"
"github.com/prometheus/prometheus/promql"
"github.com/prometheus/prometheus/storage"

"github.com/weaveworks/cortex/pkg/ingester/client"
"github.com/weaveworks/cortex/pkg/prom1/storage/metric"

"github.com/weaveworks/cortex/pkg/util"
)

// Config contains the configuration require to create a querier
type Config struct {
MaxConcurrent int
Timeout time.Duration
}

// RegisterFlags adds the flags required to config this to the given FlagSet
func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
flag.IntVar(&cfg.MaxConcurrent, "querier.max-concurrent", 20, "The maximum number of concurrent queries.")
flag.DurationVar(&cfg.Timeout, "querier.timeout", 2*time.Minute, "The timeout for a query.")
}

// ChunkStore is the interface we need to get chunks
type ChunkStore interface {
Get(ctx context.Context, from, through model.Time, matchers ...*labels.Matcher) (model.Matrix, error)
}

// NewEngine creates a new promql.Engine for cortex.
func NewEngine(distributor Querier, chunkStore ChunkStore) *promql.Engine {
func NewEngine(distributor Querier, chunkStore ChunkStore, reg prometheus.Registerer, maxConcurrent int, timeout time.Duration) (*promql.Engine, storage.Queryable) {
queryable := NewQueryable(distributor, chunkStore, false)
return promql.NewEngine(queryable, nil)
engine := promql.NewEngine(util.Logger, reg, maxConcurrent, timeout)
return engine, queryable
}

// NewQueryable creates a new Queryable for cortex.
Expand Down Expand Up @@ -195,7 +212,7 @@ type mergeQuerier struct {
metadataOnly bool
}

func (mq mergeQuerier) Select(matchers ...*labels.Matcher) (storage.SeriesSet, error) {
func (mq mergeQuerier) Select(_ *storage.SelectParams, matchers ...*labels.Matcher) (storage.SeriesSet, error) {
// TODO: Update underlying selectors to return errors directly.
if mq.metadataOnly {
return mq.selectMetadata(matchers...), nil
Expand Down
2 changes: 1 addition & 1 deletion pkg/querier/querier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ func TestMergeQuerierSortsMetricLabels(t *testing.T) {
}
m, err := labels.NewMatcher(labels.MatchEqual, model.MetricNameLabel, "testmetric")
require.NoError(t, err)
ss, err := mq.Select(m)
ss, err := mq.Select(nil, m)
require.NoError(t, err)
require.NoError(t, ss.Err())
ss.Next()
Expand Down
11 changes: 6 additions & 5 deletions pkg/ruler/ruler.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,15 @@ import (
"github.com/prometheus/prometheus/notifier"
"github.com/prometheus/prometheus/promql"
"github.com/prometheus/prometheus/rules"
"github.com/prometheus/prometheus/storage"
"github.com/prometheus/prometheus/util/strutil"
"golang.org/x/net/context"
"golang.org/x/net/context/ctxhttp"

"github.com/weaveworks/common/instrument"
"github.com/weaveworks/common/user"
"github.com/weaveworks/cortex/pkg/chunk"
"github.com/weaveworks/cortex/pkg/configs"
"github.com/weaveworks/cortex/pkg/distributor"
"github.com/weaveworks/cortex/pkg/querier"
"github.com/weaveworks/cortex/pkg/util"
)

Expand Down Expand Up @@ -123,6 +122,7 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
// Ruler evaluates rules.
type Ruler struct {
engine *promql.Engine
queryable storage.Queryable
pusher Pusher
alertURL *url.URL
notifierCfg *config.Config
Expand Down Expand Up @@ -196,13 +196,14 @@ func (rn *rulerNotifier) stop() {
}

// NewRuler creates a new ruler from a distributor and chunk store.
func NewRuler(cfg Config, d *distributor.Distributor, c *chunk.Store) (*Ruler, error) {
func NewRuler(cfg Config, engine *promql.Engine, queryable storage.Queryable, d *distributor.Distributor) (*Ruler, error) {
ncfg, err := buildNotifierConfig(&cfg)
if err != nil {
return nil, err
}
return &Ruler{
engine: querier.NewEngine(d, c),
engine: engine,
queryable: queryable,
pusher: d,
alertURL: cfg.ExternalURL.URL,
notifierCfg: ncfg,
Expand Down Expand Up @@ -283,7 +284,7 @@ func (r *Ruler) newGroup(ctx context.Context, userID string, item *workItem) (*r
}
opts := &rules.ManagerOptions{
Appendable: appendable,
QueryFunc: rules.EngineQueryFunc(r.engine),
QueryFunc: rules.EngineQueryFunc(r.engine, r.queryable),
Context: ctx,
ExternalURL: r.alertURL,
NotifyFunc: sendAlerts(notifier, r.alertURL.String()),
Expand Down
5 changes: 4 additions & 1 deletion pkg/ruler/ruler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/prometheus/prometheus/notifier"
"github.com/stretchr/testify/assert"
"github.com/weaveworks/common/user"
"github.com/weaveworks/cortex/pkg/querier"
)

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

// TODO: Populate distributor and chunk store arguments to enable
// other kinds of tests.
ruler, err := NewRuler(cfg, nil, nil)

engine, queryable := querier.NewEngine(nil, nil, nil, 20, 2*time.Minute)
ruler, err := NewRuler(cfg, engine, queryable, nil)
if err != nil {
t.Fatal(err)
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading