From f0369e12e7138f9778ad33c8e09893b2ceaf7ea2 Mon Sep 17 00:00:00 2001 From: Jeffrey Picard Date: Thu, 21 Oct 2021 02:52:03 -0400 Subject: [PATCH] Cleanup metrics Consolidated error metrics into a vector counter with a label, removed other uneeded counters. --- internal/metrics/metrics.go | 44 ++++--------------------------------- server/search.go | 17 +++++--------- server/server.go | 4 +++- 3 files changed, 13 insertions(+), 52 deletions(-) diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index f8a36ef..c78f03e 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -1,7 +1,6 @@ package metrics import ( - "github.com/lbryio/hub/meta" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" ) @@ -13,46 +12,11 @@ var ( Name: "requests_count", Help: "Total number of searches", }, []string{"method"}) - SessionCount = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "session_count", - Help: "Number of client sessions", - ConstLabels: map[string]string{ - "version": meta.Version, - }, - }) // These are unique to the go code - PingsCounter = promauto.NewCounter(prometheus.CounterOpts{ - Name: "pings", - Help: "Number of pings", - }) - ZeroChannelsCounter = promauto.NewCounter(prometheus.CounterOpts{ - Name: "zero_channels_counter", - Help: "Number of times zero channels were returned in getUniqueChannels", - }) - NoRepostedCounter = promauto.NewCounter(prometheus.CounterOpts{ - Name: "no_reposted_counter", - Help: "Number of times zero reposted were returned in getClaimsForRepost", - }) - GetUniqueChannelsErrorCounter = promauto.NewCounter(prometheus.CounterOpts{ - Name: "get_unique_channels_error_counter", - Help: "Number of errors", - }) - JsonErrorCounter = promauto.NewCounter(prometheus.CounterOpts{ - Name: "json_error_counter", - Help: "JSON parsing errors", - }) - MgetErrorCounter = promauto.NewCounter(prometheus.CounterOpts{ - Name: "mget_error_counter", - Help: "Mget errors", - }) - SearchErrorCounter = promauto.NewCounter(prometheus.CounterOpts{ - Name: "search_error_counter", - Help: "Number of errors", - }) - FatalErrorCounter = promauto.NewCounter(prometheus.CounterOpts{ - Name: "fatal_error_counter", - Help: "Number of errors", - }) + ErrorsCounter = promauto.NewCounterVec(prometheus.CounterOpts{ + Name: "errors", + Help: "Number of errors by type", + }, []string{"error_type"}) QueryTime = promauto.NewHistogramVec(prometheus.HistogramOpts{ Name: "query_time", Help: "Histogram of query times", diff --git a/server/search.go b/server/search.go index 545958a..44b754d 100644 --- a/server/search.go +++ b/server/search.go @@ -129,8 +129,7 @@ func AddInvertibleField(q *elastic.BoolQuery, field *pb.InvertibleField, name st } func (s *Server) recordErrorAndDie(err error) { - // TODO record metric fatal_error_counter - metrics.FatalErrorCounter.Inc() + metrics.ErrorsCounter.With(prometheus.Labels{"error_type": "fatal"}).Inc() log.Fatalln(err) } @@ -172,8 +171,6 @@ func RoundUpReleaseTime(q *elastic.BoolQuery, rq *pb.RangeField, name string) *e //*/ func (s *Server) Search(ctx context.Context, in *pb.SearchRequest) (*pb.Outputs, error) { metrics.RequestsCount.With(prometheus.Labels{"method": "search"}).Inc() - metrics.SessionCount.Inc() - defer func() {metrics.SessionCount.Dec()}() defer func(t time.Time) { delta := time.Since(t).Seconds() metrics. @@ -262,7 +259,7 @@ func (s *Server) Search(ctx context.Context, in *pb.SearchRequest) (*pb.Outputs, return &pb.Outputs{}, nil } else if err != nil { - metrics.SearchErrorCounter.Inc() + metrics.ErrorsCounter.With(prometheus.Labels{"error_type": "search"}).Inc() log.Println("Error executing query: ", err) return nil, err } @@ -650,13 +647,12 @@ func (s *Server) getUniqueChannels(records []*record, client *elastic.Client, ct } } if totalChannels == 0 { - metrics.ZeroChannelsCounter.Inc() return []*pb.Output{}, make(map[string]*pb.Output) } res, err := mget.Do(ctx) if err != nil { - metrics.GetUniqueChannelsErrorCounter.Inc() + metrics.ErrorsCounter.With(prometheus.Labels{"error_type": "get_unique_channels"}).Inc() log.Println(err) return []*pb.Output{}, make(map[string]*pb.Output) } @@ -669,7 +665,7 @@ func (s *Server) getUniqueChannels(records []*record, client *elastic.Client, ct var r record err := json.Unmarshal(doc.Source, &r) if err != nil { - metrics.JsonErrorCounter.Inc() + metrics.ErrorsCounter.With(prometheus.Labels{"error_type": "json"}).Inc() log.Println(err) return []*pb.Output{}, make(map[string]*pb.Output) } @@ -704,13 +700,12 @@ func (s *Server) getClaimsForReposts(ctx context.Context, client *elastic.Client } //mget = mget.Add(nmget) if totalReposted == 0 { - metrics.NoRepostedCounter.Inc() return []*pb.Output{}, []*record{}, make(map[string]*pb.Output) } res, err := mget.Do(ctx) if err != nil { - metrics.MgetErrorCounter.Inc() + metrics.ErrorsCounter.With(prometheus.Labels{"error_type": "mget"}).Inc() log.Println(err) return []*pb.Output{}, []*record{}, make(map[string]*pb.Output) } @@ -724,7 +719,7 @@ func (s *Server) getClaimsForReposts(ctx context.Context, client *elastic.Client var r record err := json.Unmarshal(doc.Source, &r) if err != nil { - metrics.JsonErrorCounter.Inc() + metrics.ErrorsCounter.With(prometheus.Labels{"error_type": "json"}).Inc() log.Println(err) return []*pb.Output{}, []*record{}, make(map[string]*pb.Output) } diff --git a/server/server.go b/server/server.go index c70a102..b73a6ec 100644 --- a/server/server.go +++ b/server/server.go @@ -16,6 +16,7 @@ import ( "github.com/lbryio/hub/meta" pb "github.com/lbryio/hub/protobuf/go" "github.com/olivere/elastic/v7" + "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "google.golang.org/grpc" ) @@ -179,10 +180,11 @@ func (s *Server) Hello(context context.Context, args *FederatedServer) (*Federat } func (s *Server) Ping(context context.Context, args *pb.EmptyMessage) (*pb.StringValue, error) { - metrics.PingsCounter.Inc() + metrics.RequestsCount.With(prometheus.Labels{"method": "ping"}).Inc() return &pb.StringValue{Value: "Hello, world!"}, nil } func (s *Server) Version(context context.Context, args *pb.EmptyMessage) (*pb.StringValue, error) { + metrics.RequestsCount.With(prometheus.Labels{"method": "version"}).Inc() return &pb.StringValue{Value: getVersion()}, nil }