From 5e810e30ccb42a36b24e933c09177b575e6494e6 Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Mon, 14 Nov 2016 13:52:25 -0800 Subject: [PATCH] v3rpc: replace grpc metrics w/ go-grpc-prometheus And disable histogram --- etcdserver/api/v3rpc/interceptor.go | 35 ++++---------------------- etcdserver/api/v3rpc/metrics.go | 38 ----------------------------- 2 files changed, 5 insertions(+), 68 deletions(-) diff --git a/etcdserver/api/v3rpc/interceptor.go b/etcdserver/api/v3rpc/interceptor.go index ae49d9f5b..7b693bf61 100644 --- a/etcdserver/api/v3rpc/interceptor.go +++ b/etcdserver/api/v3rpc/interceptor.go @@ -25,6 +25,7 @@ import ( "github.com/coreos/etcd/pkg/types" "github.com/coreos/etcd/raft" + prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/metadata" @@ -53,7 +54,8 @@ func newUnaryInterceptor(s *etcdserver.EtcdServer) grpc.UnaryServerInterceptor { } } } - return metricsUnaryInterceptor(ctx, req, info, handler) + + return prometheus.UnaryServerInterceptor(ctx, req, info, handler) } } @@ -88,38 +90,11 @@ func newStreamInterceptor(s *etcdserver.EtcdServer) grpc.StreamServerInterceptor } } - return metricsStreamInterceptor(srv, ss, info, handler) + + return prometheus.StreamServerInterceptor(srv, ss, info, handler) } } -func metricsUnaryInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { - service, method := splitMethodName(info.FullMethod) - receivedCounter.WithLabelValues(service, method).Inc() - - start := time.Now() - resp, err = handler(ctx, req) - if err != nil { - failedCounter.WithLabelValues(service, method, grpc.Code(err).String()).Inc() - } - handlingDuration.WithLabelValues(service, method).Observe(time.Since(start).Seconds()) - - return resp, err -} - -func metricsStreamInterceptor(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error { - service, method := splitMethodName(info.FullMethod) - receivedCounter.WithLabelValues(service, method).Inc() - - streamsGauage.WithLabelValues(service, method).Inc() - err := handler(srv, ss) - streamsGauage.WithLabelValues(service, method).Dec() - if err != nil { - failedCounter.WithLabelValues(service, method, grpc.Code(err).String()).Inc() - } - - return err -} - func splitMethodName(fullMethodName string) (string, string) { fullMethodName = strings.TrimPrefix(fullMethodName, "/") // remove leading slash if i := strings.Index(fullMethodName, "/"); i >= 0 { diff --git a/etcdserver/api/v3rpc/metrics.go b/etcdserver/api/v3rpc/metrics.go index c159cd83a..6cb41a61e 100644 --- a/etcdserver/api/v3rpc/metrics.go +++ b/etcdserver/api/v3rpc/metrics.go @@ -17,39 +17,6 @@ package v3rpc import "github.com/prometheus/client_golang/prometheus" var ( - receivedCounter = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Namespace: "etcd", - Subsystem: "grpc", - Name: "requests_total", - Help: "Counter of received requests.", - }, []string{"grpc_service", "grpc_method"}) - - failedCounter = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Namespace: "etcd", - Subsystem: "grpc", - Name: "requests_failed_total", - Help: "Counter of failed requests.", - }, []string{"grpc_service", "grpc_method", "grpc_code"}) - - streamsGauage = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Namespace: "etcd", - Subsystem: "grpc", - Name: "active_streams", - Help: "Number of active streams.", - }, []string{"grpc_service", "grpc_method"}) - - handlingDuration = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Namespace: "etcd", - Subsystem: "grpc", - Name: "unary_requests_duration_seconds", - Help: "Bucketed histogram of processing time (s) of handled unary (non-stream) requests.", - Buckets: prometheus.ExponentialBuckets(0.0005, 2, 13), - }, []string{"grpc_service", "grpc_method"}) - sentBytes = prometheus.NewCounter(prometheus.CounterOpts{ Namespace: "etcd", Subsystem: "network", @@ -66,11 +33,6 @@ var ( ) func init() { - prometheus.MustRegister(receivedCounter) - prometheus.MustRegister(failedCounter) - prometheus.MustRegister(streamsGauage) - prometheus.MustRegister(handlingDuration) - prometheus.MustRegister(sentBytes) prometheus.MustRegister(receivedBytes) }