mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-03 23:40:03 +00:00 
			
		
		
		
	v1.1.0 (which is what we currently use), does not expose metrics which makes it impossible to migrate.
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2016 Michal Witkowski. All Rights Reserved.
 | 
						|
// See LICENSE for licensing terms.
 | 
						|
 | 
						|
// gRPC Prometheus monitoring interceptors for server-side gRPC.
 | 
						|
 | 
						|
package grpc_prometheus
 | 
						|
 | 
						|
import (
 | 
						|
	prom "github.com/prometheus/client_golang/prometheus"
 | 
						|
	"google.golang.org/grpc"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	// DefaultServerMetrics is the default instance of ServerMetrics. It is
 | 
						|
	// intended to be used in conjunction the default Prometheus metrics
 | 
						|
	// registry.
 | 
						|
	DefaultServerMetrics = NewServerMetrics()
 | 
						|
 | 
						|
	// UnaryServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Unary RPCs.
 | 
						|
	UnaryServerInterceptor = DefaultServerMetrics.UnaryServerInterceptor()
 | 
						|
 | 
						|
	// StreamServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Streaming RPCs.
 | 
						|
	StreamServerInterceptor = DefaultServerMetrics.StreamServerInterceptor()
 | 
						|
)
 | 
						|
 | 
						|
func init() {
 | 
						|
	prom.MustRegister(DefaultServerMetrics.serverStartedCounter)
 | 
						|
	prom.MustRegister(DefaultServerMetrics.serverHandledCounter)
 | 
						|
	prom.MustRegister(DefaultServerMetrics.serverStreamMsgReceived)
 | 
						|
	prom.MustRegister(DefaultServerMetrics.serverStreamMsgSent)
 | 
						|
}
 | 
						|
 | 
						|
// Register takes a gRPC server and pre-initializes all counters to 0. This
 | 
						|
// allows for easier monitoring in Prometheus (no missing metrics), and should
 | 
						|
// be called *after* all services have been registered with the server. This
 | 
						|
// function acts on the DefaultServerMetrics variable.
 | 
						|
func Register(server *grpc.Server) {
 | 
						|
	DefaultServerMetrics.InitializeMetrics(server)
 | 
						|
}
 | 
						|
 | 
						|
// EnableHandlingTimeHistogram 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 DefaultServerMetrics
 | 
						|
// variable and the default Prometheus metrics registry.
 | 
						|
func EnableHandlingTimeHistogram(opts ...HistogramOption) {
 | 
						|
	DefaultServerMetrics.EnableHandlingTimeHistogram(opts...)
 | 
						|
	prom.Register(DefaultServerMetrics.serverHandledHistogram)
 | 
						|
}
 |