// Copyright 2016 Michal Witkowski. All Rights Reserved. // See LICENSE for licensing terms. // gRPC Prometheus monitoring interceptors for client-side gRPC. package grpc_prometheus import ( prom "github.com/prometheus/client_golang/prometheus" ) var ( // DefaultClientMetrics is the default instance of ClientMetrics. It is // intended to be used in conjunction the default Prometheus metrics // registry. DefaultClientMetrics = NewClientMetrics() // UnaryClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Unary RPCs. UnaryClientInterceptor = DefaultClientMetrics.UnaryClientInterceptor() // StreamClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Streaming RPCs. StreamClientInterceptor = DefaultClientMetrics.StreamClientInterceptor() ) func init() { prom.MustRegister(DefaultClientMetrics.clientStartedCounter) prom.MustRegister(DefaultClientMetrics.clientHandledCounter) prom.MustRegister(DefaultClientMetrics.clientStreamMsgReceived) prom.MustRegister(DefaultClientMetrics.clientStreamMsgSent) } // EnableClientHandlingTimeHistogram turns on recording of handling time of // RPCs. Histogram metrics can be very expensive for Prometheus to retain and // query. This function acts on the DefaultClientMetrics variable and the // default Prometheus metrics registry. func EnableClientHandlingTimeHistogram(opts ...HistogramOption) { DefaultClientMetrics.EnableClientHandlingTimeHistogram(opts...) prom.Register(DefaultClientMetrics.clientHandledHistogram) }