grpcprom

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 17, 2018 License: MIT Imports: 10 Imported by: 0

README

grpcprom

import "github.com/abursavich/grpcprom"

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

Code:

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

Index

Examples
Package files

grpcprom.go

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.

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
func (m *Metrics) InitServer(srv *grpc.Server, code ...codes.Code)

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
func (m *Metrics) StatsHandler() stats.Handler

StatsHandler returns a gRPC stats.Handler.

Deprecated: Use DialOption or ServerOption instead.

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


Generated by godoc2md

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

Examples

Constants

This section is empty.

Variables

View Source
var DefaultBytesBuckets = []float64{0, 32, 64, 128, 256, 512, 1024, 2048, 8192, 32768, 131072, 524288}

DefaultBytesBuckets are the default bytes histogram buckets.

View Source
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

func (m *Metrics) InitServer(srv *grpc.Server, code ...codes.Code)

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

func (m *Metrics) StatsHandler() stats.Handler

StatsHandler returns a gRPC stats.Handler.

Deprecated: Use DialOption or ServerOption instead.

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL