Skip to content

Commit

Permalink
Remove global response time histogram in ingester client (#5594)
Browse files Browse the repository at this point in the history
Removes use of the global prometheus.Registry without duplicate registration

Signed-off-by: Nick Pillitteri <[email protected]>
  • Loading branch information
56quarters authored Jul 27, 2023
1 parent 8996a50 commit 54670ec
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 16 deletions.
3 changes: 2 additions & 1 deletion pkg/distributor/distributor.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,9 +220,10 @@ const (

// New constructs a new Distributor
func New(cfg Config, clientConfig ingester_client.Config, limits *validation.Overrides, activeGroupsCleanupService *util.ActiveGroupsCleanupService, ingestersRing ring.ReadRing, canJoinDistributorsRing bool, reg prometheus.Registerer, log log.Logger) (*Distributor, error) {
clientMetrics := ingester_client.NewMetrics(reg)
if cfg.IngesterClientFactory == nil {
cfg.IngesterClientFactory = func(addr string) (ring_client.PoolClient, error) {
return ingester_client.MakeIngesterClient(addr, clientConfig)
return ingester_client.MakeIngesterClient(addr, clientConfig, clientMetrics)
}
}

Expand Down
13 changes: 2 additions & 11 deletions pkg/ingester/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,12 @@ import (
"flag"

"github.com/grafana/dskit/grpcclient"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
"google.golang.org/grpc"
"google.golang.org/grpc/health/grpc_health_v1"

"github.com/grafana/mimir/pkg/mimirpb"
)

//lint:ignore faillint It's non-trivial to remove this global variable.
var ingesterClientRequestDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{
Name: "cortex_ingester_client_request_duration_seconds",
Help: "Time spent doing Ingester requests.",
Buckets: prometheus.ExponentialBuckets(0.001, 4, 8),
}, []string{"operation", "status_code"})

// HealthAndIngesterClient is the union of IngesterClient and grpc_health_v1.HealthClient.
type HealthAndIngesterClient interface {
IngesterClient
Expand All @@ -38,8 +29,8 @@ type closableHealthAndIngesterClient struct {
}

// MakeIngesterClient makes a new IngesterClient
func MakeIngesterClient(addr string, cfg Config) (HealthAndIngesterClient, error) {
dialOpts, err := cfg.GRPCClientConfig.DialOption(grpcclient.Instrument(ingesterClientRequestDuration))
func MakeIngesterClient(addr string, cfg Config, metrics *Metrics) (HealthAndIngesterClient, error) {
dialOpts, err := cfg.GRPCClientConfig.DialOption(grpcclient.Instrument(metrics.RequestDuration))
if err != nil {
return nil, err
}
Expand Down
22 changes: 22 additions & 0 deletions pkg/ingester/client/metrics.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// SPDX-License-Identifier: AGPL-3.0-only

package client

import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)

type Metrics struct {
RequestDuration *prometheus.HistogramVec
}

func NewMetrics(reg prometheus.Registerer) *Metrics {
return &Metrics{
RequestDuration: promauto.With(reg).NewHistogramVec(prometheus.HistogramOpts{
Name: "cortex_ingester_client_request_duration_seconds",
Help: "Time spent doing Ingester requests.",
Buckets: prometheus.ExponentialBuckets(0.001, 4, 8),
}, []string{"operation", "status_code"}),
}
}
8 changes: 4 additions & 4 deletions pkg/ingester/ingester_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2700,7 +2700,7 @@ func TestIngester_QueryStream(t *testing.T) {
}()

// Query back the series using GRPC streaming.
c, err := client.MakeIngesterClient(listener.Addr().String(), defaultClientTestConfig())
c, err := client.MakeIngesterClient(listener.Addr().String(), defaultClientTestConfig(), client.NewMetrics(nil))
require.NoError(t, err)
defer c.Close()

Expand Down Expand Up @@ -2967,7 +2967,7 @@ func TestIngester_QueryStream_TimeseriesWithManySamples(t *testing.T) {
}()

// Query back the series using GRPC streaming.
c, err := client.MakeIngesterClient(listener.Addr().String(), defaultClientTestConfig())
c, err := client.MakeIngesterClient(listener.Addr().String(), defaultClientTestConfig(), client.NewMetrics(nil))
require.NoError(t, err)
defer c.Close()

Expand Down Expand Up @@ -3054,7 +3054,7 @@ func setupQueryingManySamplesAsChunksTest(ctx context.Context, t *testing.T, cfg
}()

// Query back the series using GRPC streaming.
c, err := client.MakeIngesterClient(listener.Addr().String(), defaultClientTestConfig())
c, err := client.MakeIngesterClient(listener.Addr().String(), defaultClientTestConfig(), client.NewMetrics(nil))
require.NoError(t, err)
t.Cleanup(func() { c.Close() }) //nolint:errcheck

Expand Down Expand Up @@ -3243,7 +3243,7 @@ func TestIngester_QueryStream_StreamingWithManySeries(t *testing.T) {
require.NoError(t, serv.Serve(listener))
}()

c, err := client.MakeIngesterClient(listener.Addr().String(), defaultClientTestConfig())
c, err := client.MakeIngesterClient(listener.Addr().String(), defaultClientTestConfig(), client.NewMetrics(nil))
require.NoError(t, err)
t.Cleanup(func() { c.Close() }) //nolint:errcheck

Expand Down

0 comments on commit 54670ec

Please sign in to comment.