|
|
@@ -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,36 +90,9 @@ func newStreamInterceptor(s *etcdserver.EtcdServer) grpc.StreamServerInterceptor
|
|
|
|
|
|
}
|
|
|
}
|
|
|
- return metricsStreamInterceptor(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 prometheus.StreamServerInterceptor(srv, ss, info, handler)
|
|
|
}
|
|
|
-
|
|
|
- return err
|
|
|
}
|
|
|
|
|
|
func splitMethodName(fullMethodName string) (string, string) {
|