Documentation ¶
Overview ¶
Package prometheus provides a standalone interceptor for metrics. It's next iteration of deprecated https://github.com/grpc-ecosystem/go-grpc-prometheus. See https://github.com/grpc-ecosystem/go-grpc-middleware/tree/main/examples for example.
Index ¶
- Constants
- func FromError(err error) *status.Status
- type ClientMetrics
- func (m *ClientMetrics) Collect(ch chan<- prometheus.Metric)
- func (m *ClientMetrics) Describe(ch chan<- *prometheus.Desc)
- func (m *ClientMetrics) StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor
- func (m *ClientMetrics) UnaryClientInterceptor(opts ...Option) grpc.UnaryClientInterceptor
- type ClientMetricsOption
- func WithClientCounterOptions(opts ...CounterOption) ClientMetricsOption
- func WithClientHandlingTimeHistogram(opts ...HistogramOption) ClientMetricsOption
- func WithClientStreamRecvHistogram(opts ...HistogramOption) ClientMetricsOption
- func WithClientStreamSendHistogram(opts ...HistogramOption) ClientMetricsOption
- type CounterOption
- type HistogramOption
- type Kind
- type Option
- type ServerMetrics
- func (m *ServerMetrics) Collect(ch chan<- prometheus.Metric)
- func (m *ServerMetrics) Describe(ch chan<- *prometheus.Desc)
- func (m *ServerMetrics) InitializeMetrics(server reflection.ServiceInfoProvider)
- func (m *ServerMetrics) StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor
- func (m *ServerMetrics) UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptor
- type ServerMetricsOption
Constants ¶
const ( Unary grpcType = "unary" ClientStream grpcType = "client_stream" ServerStream grpcType = "server_stream" BidiStream grpcType = "bidi_stream" )
grpcType describes all types of grpc connection.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ClientMetrics ¶
type ClientMetrics struct {
// contains filtered or unexported fields
}
ClientMetrics represents a collection of metrics to be registered on a Prometheus metrics registry for a gRPC client.
func NewClientMetrics ¶
func NewClientMetrics(opts ...ClientMetricsOption) *ClientMetrics
NewClientMetrics returns a new ClientMetrics object. NOTE: Remember to register ClientMetrics object using prometheus registry e.g. prometheus.MustRegister(myClientMetrics).
func (*ClientMetrics) Collect ¶
func (m *ClientMetrics) Collect(ch chan<- prometheus.Metric)
Collect is called by the Prometheus registry when collecting metrics. The implementation sends each collected metric via the provided channel and returns once the last metric has been sent.
func (*ClientMetrics) Describe ¶
func (m *ClientMetrics) Describe(ch chan<- *prometheus.Desc)
Describe sends the super-set of all possible descriptors of metrics collected by this Collector to the provided channel and returns once the last descriptor has been sent.
func (*ClientMetrics) StreamClientInterceptor ¶
func (m *ClientMetrics) StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor
StreamClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Streaming RPCs.
func (*ClientMetrics) UnaryClientInterceptor ¶
func (m *ClientMetrics) UnaryClientInterceptor(opts ...Option) grpc.UnaryClientInterceptor
UnaryClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Unary RPCs.
type ClientMetricsOption ¶
type ClientMetricsOption func(*clientMetricsConfig)
func WithClientCounterOptions ¶
func WithClientCounterOptions(opts ...CounterOption) ClientMetricsOption
func WithClientHandlingTimeHistogram ¶
func WithClientHandlingTimeHistogram(opts ...HistogramOption) ClientMetricsOption
WithClientHandlingTimeHistogram turns on recording of handling time of RPCs. Histogram metrics can be very expensive for Prometheus to retain and query.
func WithClientStreamRecvHistogram ¶
func WithClientStreamRecvHistogram(opts ...HistogramOption) ClientMetricsOption
WithClientStreamRecvHistogram turns on recording of single message receive time of streaming RPCs. Histogram metrics can be very expensive for Prometheus to retain and query.
func WithClientStreamSendHistogram ¶
func WithClientStreamSendHistogram(opts ...HistogramOption) ClientMetricsOption
WithClientStreamSendHistogram turns on recording of single message send time of streaming RPCs. Histogram metrics can be very expensive for Prometheus to retain and query.
type CounterOption ¶
type CounterOption func(*prometheus.CounterOpts)
A CounterOption lets you add options to Counter metrics using With* funcs.
func WithConstLabels ¶
func WithConstLabels(labels prometheus.Labels) CounterOption
WithConstLabels allows you to add ConstLabels to Counter metrics.
func WithSubsystem ¶
func WithSubsystem(subsystem string) CounterOption
WithSubsystem allows you to add a Subsystem to Counter metrics.
type HistogramOption ¶
type HistogramOption func(*prometheus.HistogramOpts)
A HistogramOption lets you add options to Histogram metrics using With* funcs.
func WithHistogramBuckets ¶
func WithHistogramBuckets(buckets []float64) HistogramOption
WithHistogramBuckets allows you to specify custom bucket ranges for histograms if EnableHandlingTimeHistogram is on.
func WithHistogramConstLabels ¶
func WithHistogramConstLabels(labels prometheus.Labels) HistogramOption
WithHistogramConstLabels allows you to add custom ConstLabels to histograms metrics.
func WithHistogramOpts ¶
func WithHistogramOpts(opts *prometheus.HistogramOpts) HistogramOption
WithHistogramOpts allows you to specify HistogramOpts but makes sure the correct name and label is used. This function is helpful when specifying more than just the buckets, like using NativeHistograms.
func WithHistogramSubsystem ¶
func WithHistogramSubsystem(subsystem string) HistogramOption
WithHistogramSubsystem allows you to add a Subsystem to histograms metrics.
type Option ¶
type Option func(*config)
An Option lets you add options to prometheus interceptors using With* funcs.
func WithExemplarFromContext ¶
func WithExemplarFromContext(exemplarFn exemplarFromCtxFn) Option
WithExemplarFromContext sets function that will be used to deduce exemplar for all counter and histogram metrics.
type ServerMetrics ¶
type ServerMetrics struct {
// contains filtered or unexported fields
}
ServerMetrics represents a collection of metrics to be registered on a Prometheus metrics registry for a gRPC server.
func NewServerMetrics ¶
func NewServerMetrics(opts ...ServerMetricsOption) *ServerMetrics
NewServerMetrics returns a new ServerMetrics object that has server interceptor methods. NOTE: Remember to register ServerMetrics object by using prometheus registry e.g. prometheus.MustRegister(myServerMetrics).
func (*ServerMetrics) Collect ¶
func (m *ServerMetrics) Collect(ch chan<- prometheus.Metric)
Collect is called by the Prometheus registry when collecting metrics. The implementation sends each collected metric via the provided channel and returns once the last metric has been sent.
func (*ServerMetrics) Describe ¶
func (m *ServerMetrics) Describe(ch chan<- *prometheus.Desc)
Describe sends the super-set of all possible descriptors of metrics collected by this Collector to the provided channel and returns once the last descriptor has been sent.
func (*ServerMetrics) InitializeMetrics ¶
func (m *ServerMetrics) InitializeMetrics(server reflection.ServiceInfoProvider)
InitializeMetrics initializes all metrics, with their appropriate null value, for all gRPC methods registered on a gRPC server. This is useful, to ensure that all metrics exist when collecting and querying. NOTE: This might add significant cardinality and might not be needed in future version of Prometheus (created timestamp).
func (*ServerMetrics) StreamServerInterceptor ¶
func (m *ServerMetrics) StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor
StreamServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Streaming RPCs.
func (*ServerMetrics) UnaryServerInterceptor ¶
func (m *ServerMetrics) UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptor
UnaryServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Unary RPCs.
type ServerMetricsOption ¶
type ServerMetricsOption func(*serverMetricsConfig)
func WithServerCounterOptions ¶
func WithServerCounterOptions(opts ...CounterOption) ServerMetricsOption
WithServerCounterOptions sets counter options.
func WithServerHandlingTimeHistogram ¶
func WithServerHandlingTimeHistogram(opts ...HistogramOption) ServerMetricsOption
WithServerHandlingTimeHistogram turns on recording of handling time of RPCs. Histogram metrics can be very expensive for Prometheus to retain and query.