Documentation ¶
Index ¶
- func RegisterInterceptor(s ServiceInfoProvider, i *Interceptor) (err error)
- type Interceptor
- func (i *Interceptor) Collect(in chan<- prometheus.Metric)
- func (i *Interceptor) Describe(in chan<- *prometheus.Desc)
- func (i *Interceptor) Dialer(f func(string, time.Duration) (net.Conn, error)) func(string, time.Duration) (net.Conn, error)
- func (i *Interceptor) HandleConn(ctx context.Context, stat stats.ConnStats)
- func (i *Interceptor) HandleRPC(ctx context.Context, stat stats.RPCStats)
- func (i *Interceptor) StreamClient() grpc.StreamClientInterceptor
- func (i *Interceptor) StreamServer() grpc.StreamServerInterceptor
- func (i *Interceptor) TagConn(ctx context.Context, info *stats.ConnTagInfo) context.Context
- func (i *Interceptor) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context
- func (i *Interceptor) UnaryClient() grpc.UnaryClientInterceptor
- func (i *Interceptor) UnaryServer() grpc.UnaryServerInterceptor
- type InterceptorOpts
- type ServiceInfoProvider
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterInterceptor ¶
func RegisterInterceptor(s ServiceInfoProvider, i *Interceptor) (err error)
RegisterInterceptor preallocates possible dimensions of every metric. If peer tracking is enabled, nothing will happen. If you register interceptor very frequently (for example during tests) it can allocate huge amount of memory.
Types ¶
type Interceptor ¶
type Interceptor struct {
// contains filtered or unexported fields
}
Interceptor ...
func NewInterceptor ¶
func NewInterceptor(opts InterceptorOpts) *Interceptor
NewInterceptor implements both prometheus Collector interface and methods required by grpc Interceptor.
func (*Interceptor) Collect ¶
func (i *Interceptor) Collect(in chan<- prometheus.Metric)
Collect implements prometheus Collector interface.
func (*Interceptor) Describe ¶
func (i *Interceptor) Describe(in chan<- *prometheus.Desc)
Describe implements prometheus Collector interface.
func (*Interceptor) Dialer ¶
func (i *Interceptor) Dialer(f func(string, time.Duration) (net.Conn, error)) func(string, time.Duration) (net.Conn, error)
Dialer ...
Example ¶
interceptor := promgrpc.NewInterceptor(promgrpc.InterceptorOpts{}) var opts []grpc.DialOption opts = append(opts, grpc.WithDialer(interceptor.Dialer(func(addr string, timeout time.Duration) (net.Conn, error) { return net.DialTimeout("tcp", addr, timeout) })))
Output:
func (*Interceptor) HandleConn ¶
func (i *Interceptor) HandleConn(ctx context.Context, stat stats.ConnStats)
HandleConn implements stats Handler interface.
func (*Interceptor) HandleRPC ¶
func (i *Interceptor) HandleRPC(ctx context.Context, stat stats.RPCStats)
HandleRPC implements stats Handler interface.
func (*Interceptor) StreamClient ¶
func (i *Interceptor) StreamClient() grpc.StreamClientInterceptor
StreamClient ...
func (*Interceptor) StreamServer ¶
func (i *Interceptor) StreamServer() grpc.StreamServerInterceptor
StreamServer ...
func (*Interceptor) TagConn ¶
func (i *Interceptor) TagConn(ctx context.Context, info *stats.ConnTagInfo) context.Context
TagConn implements stats Handler interface.
func (*Interceptor) TagRPC ¶
func (i *Interceptor) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context
TagRPC implements stats Handler interface.
func (*Interceptor) UnaryClient ¶
func (i *Interceptor) UnaryClient() grpc.UnaryClientInterceptor
UnaryClient ...
func (*Interceptor) UnaryServer ¶
func (i *Interceptor) UnaryServer() grpc.UnaryServerInterceptor
UnaryServer ...
type InterceptorOpts ¶
type InterceptorOpts struct { // TrackPeers allow to turn on peer tracking. // For more info about peers please visit https://godoc.org/google.golang.org/grpc/peer. // peer is not bounded dimension so it can cause performance loss. // If its turn on Interceptor will not init metrics on startup. TrackPeers bool // ConstLabels will be passed to each collector. // Thanks to that it is possible to register multiple Interceptors. // They just have to have different constant labels. ConstLabels prometheus.Labels }
InterceptorOpts ...
type ServiceInfoProvider ¶
type ServiceInfoProvider interface { // GetServiceInfo returns a map from service names to ServiceInfo. // Service names include the package names, in the form of <package>.<service>. GetServiceInfo() map[string]grpc.ServiceInfo }
ServiceInfoProvider is simple wrapper around GetServiceInfo method. This interface is implemented by grpc Server.