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