From 67082e5bd19959d5f5348811c1211b6c626d8c4f Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Fri, 4 Nov 2016 10:37:17 -0700 Subject: [PATCH] v3rpc: add gRPC active streamsGauge --- Documentation/metrics.md | 1 + etcdserver/api/v3rpc/interceptor.go | 2 ++ etcdserver/api/v3rpc/metrics.go | 9 +++++++++ 3 files changed, 12 insertions(+) diff --git a/Documentation/metrics.md b/Documentation/metrics.md index 205c180c4..4109dd166 100644 --- a/Documentation/metrics.md +++ b/Documentation/metrics.md @@ -90,6 +90,7 @@ All these metrics are prefixed with `etcd_grpc_` |--------------------------------|-------------------------------------------------------------------------------------|------------------------| | requests_total | Total number of received requests | Counter(method) | | requests_failed_total | Total number of failed requests.   | Counter(method,error) | +| active_streams | Total number of active streams.   | Gauge(method) | | unary_requests_duration_seconds | Bucketed handling duration of the requests. | Histogram(method) | diff --git a/etcdserver/api/v3rpc/interceptor.go b/etcdserver/api/v3rpc/interceptor.go index f18f13626..ae49d9f5b 100644 --- a/etcdserver/api/v3rpc/interceptor.go +++ b/etcdserver/api/v3rpc/interceptor.go @@ -110,7 +110,9 @@ func metricsStreamInterceptor(srv interface{}, ss grpc.ServerStream, info *grpc. 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() } diff --git a/etcdserver/api/v3rpc/metrics.go b/etcdserver/api/v3rpc/metrics.go index cce80b435..c159cd83a 100644 --- a/etcdserver/api/v3rpc/metrics.go +++ b/etcdserver/api/v3rpc/metrics.go @@ -33,6 +33,14 @@ var ( 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", @@ -60,6 +68,7 @@ var ( func init() { prometheus.MustRegister(receivedCounter) prometheus.MustRegister(failedCounter) + prometheus.MustRegister(streamsGauage) prometheus.MustRegister(handlingDuration) prometheus.MustRegister(sentBytes)