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)
 | |
| }
 | 
