Cleanup metrics

Consolidated error metrics into a vector counter with a label,
removed other uneeded counters.
This commit is contained in:
Jeffrey Picard 2021-10-21 02:52:03 -04:00
parent a27b6e730d
commit 45e9817ced
3 changed files with 13 additions and 52 deletions

View file

@ -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",

View file

@ -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)
}

View file

@ -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
}