Documentation ¶
Overview ¶
Package grpcprom provides Prometheus instrumentation for gRPC clients and servers.
The following metrics are provided:
grpc_client_connections_open [gauge] Number of gRPC client connections open. grpc_client_connections_total [counter] Total number of gRPC client connections opened. grpc_client_requests_pending{service,method} [gauge] Number of gRPC client requests pending. grpc_client_requests_total{service,method,code} [counter] Total number of gRPC client requests completed. grpc_client_latency_seconds{service,method,code} [histogram] Latency of gRPC client requests. grpc_client_recv_bytes{service,method,frame} [histogram] Bytes received in gRPC client responses. grpc_client_sent_bytes{service,method,frame} [histogram] Bytes sent in gRPC client requests. grpc_server_connections_open [gauge] Number of gRPC server connections open. grpc_server_connections_total [counter] Total number of gRPC server connections opened. grpc_server_requests_pending{service,method} [gauge] Number of gRPC server requests pending. grpc_server_requests_total{service,method,code} [counter] Total number of gRPC server requests completed. grpc_server_latency_seconds{service,method,code} [histogram] Latency of gRPC server requests. grpc_server_recv_bytes{service,method,frame} [histogram] Bytes received in gRPC server requests. grpc_server_sent_bytes{service,method,frame} [histogram] Bytes sent in gRPC server responses.
Example ¶
// Create gRPC metrics with selected options and register with Prometheus. grpcMetrics := grpcprom.NewMetrics(grpcprom.MetricsOpts{ // ... }) prometheus.MustRegister(grpcMetrics) // Instrument gRPC client(s). backendConn, err := grpc.Dial(backendAddr, grpcMetrics.DialOption()) if err != nil { log.Fatal(err) } // Instrument gRPC server and, optionally, initialize server metrics. srv := grpc.NewServer(grpcMetrics.ServerOption()) pb.RegisterFrontendServer(srv, &Server{ backend: bpb.NewBackendClient(backendConn), }) grpcMetrics.InitServer(srv) // Listen and serve. lis, err := net.Listen("tcp", addr) if err != nil { log.Fatal(err) } log.Fatal(srv.Serve(lis))
Output:
Index ¶
- Variables
- type HistogramOpts
- type Metrics
- func (m *Metrics) Collect(ch chan<- prometheus.Metric)
- func (m *Metrics) Describe(ch chan<- *prometheus.Desc)
- func (m *Metrics) DialOption() grpc.DialOption
- func (m *Metrics) InitServer(srv *grpc.Server, code ...codes.Code)
- func (m *Metrics) ServerOption() grpc.ServerOption
- func (m *Metrics) StatsHandler() stats.Handlerdeprecated
- type MetricsOpts
- type SubsystemOpts
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultBytesBuckets = []float64{0, 32, 64, 128, 256, 512, 1024, 2048, 8192, 32768, 131072, 524288}
DefaultBytesBuckets are the default bytes histogram buckets.
var DefaultLatencyBuckets = []float64{0.001, 0.0025, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10}
DefaultLatencyBuckets are the default latency histogram buckets.
Functions ¶
This section is empty.
Types ¶
type HistogramOpts ¶
type HistogramOpts struct { Buckets []float64 Disable bool // contains filtered or unexported fields }
HistogramOpts specify options for histograms.
type Metrics ¶
type Metrics struct {
// contains filtered or unexported fields
}
Metrics track gRPC metrics.
func NewMetrics ¶
func NewMetrics(options MetricsOpts) *Metrics
NewMetrics returns new metrics with the given options.
func (*Metrics) Collect ¶
func (m *Metrics) Collect(ch chan<- prometheus.Metric)
Collect sends each collected metric via the provided channel and returns once the last metric has been sent.
It implements the prometheus.Collector interface.
func (*Metrics) Describe ¶
func (m *Metrics) Describe(ch chan<- *prometheus.Desc)
Describe sends the super-set of all possible descriptors of metrics to the provided channel and returns once the last descriptor has been sent.
It implements the prometheus.Collector interface.
func (*Metrics) DialOption ¶
func (m *Metrics) DialOption() grpc.DialOption
DialOption returns a gRPC DialOption that instruments metrics for the client connection.
func (*Metrics) InitServer ¶
InitServer initializes the metrics exported by the server. It limits the code labels to those provided. If not provided, all known code labels are initialized.
func (*Metrics) ServerOption ¶
func (m *Metrics) ServerOption() grpc.ServerOption
ServerOption returns a gRPC ServerOption that instruments metrics for the server.
func (*Metrics) StatsHandler
deprecated
type MetricsOpts ¶
type MetricsOpts struct { Client SubsystemOpts Server SubsystemOpts // contains filtered or unexported fields }
MetricsOpts specify options for metrics.
type SubsystemOpts ¶
type SubsystemOpts struct { BytesRecv HistogramOpts BytesSent HistogramOpts Latency HistogramOpts // contains filtered or unexported fields }
SubsystemOpts specify options for gRPC subsystems (e.g. client or server).