40 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// 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)
 | 
						|
}
 |