Documentation ¶
Index ¶
- Constants
- Variables
- func BuildHTTPMiddleware(cfg Config, router *mux.Router, metrics *Metrics, logger gokit_log.Logger) ([]middleware.Interface, error)
- func RegisterFakeServerServer(s *grpc.Server, srv FakeServerServer)
- func RegisterInstrumentation(router *mux.Router)
- func RegisterInstrumentationWithGatherer(router *mux.Router, gatherer prometheus.Gatherer)
- type Config
- type FailWithHTTPErrorRequest
- func (*FailWithHTTPErrorRequest) Descriptor() ([]byte, []int)
- func (this *FailWithHTTPErrorRequest) Equal(that interface{}) bool
- func (m *FailWithHTTPErrorRequest) GetCode() int32
- func (this *FailWithHTTPErrorRequest) GoString() string
- func (m *FailWithHTTPErrorRequest) Marshal() (dAtA []byte, err error)
- func (m *FailWithHTTPErrorRequest) MarshalTo(dAtA []byte) (int, error)
- func (m *FailWithHTTPErrorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*FailWithHTTPErrorRequest) ProtoMessage()
- func (m *FailWithHTTPErrorRequest) Reset()
- func (m *FailWithHTTPErrorRequest) Size() (n int)
- func (this *FailWithHTTPErrorRequest) String() string
- func (m *FailWithHTTPErrorRequest) Unmarshal(dAtA []byte) error
- func (m *FailWithHTTPErrorRequest) XXX_DiscardUnknown()
- func (m *FailWithHTTPErrorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *FailWithHTTPErrorRequest) XXX_Merge(src proto.Message)
- func (m *FailWithHTTPErrorRequest) XXX_Size() int
- func (m *FailWithHTTPErrorRequest) XXX_Unmarshal(b []byte) error
- type FakeServerClient
- type FakeServerServer
- type FakeServer_StreamSleepClient
- type FakeServer_StreamSleepServer
- type GrpcInflightMethodLimiter
- type Metrics
- type ProxyProtoIPResponse
- func (*ProxyProtoIPResponse) Descriptor() ([]byte, []int)
- func (this *ProxyProtoIPResponse) Equal(that interface{}) bool
- func (m *ProxyProtoIPResponse) GetIP() string
- func (this *ProxyProtoIPResponse) GoString() string
- func (m *ProxyProtoIPResponse) Marshal() (dAtA []byte, err error)
- func (m *ProxyProtoIPResponse) MarshalTo(dAtA []byte) (int, error)
- func (m *ProxyProtoIPResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*ProxyProtoIPResponse) ProtoMessage()
- func (m *ProxyProtoIPResponse) Reset()
- func (m *ProxyProtoIPResponse) Size() (n int)
- func (this *ProxyProtoIPResponse) String() string
- func (m *ProxyProtoIPResponse) Unmarshal(dAtA []byte) error
- func (m *ProxyProtoIPResponse) XXX_DiscardUnknown()
- func (m *ProxyProtoIPResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *ProxyProtoIPResponse) XXX_Merge(src proto.Message)
- func (m *ProxyProtoIPResponse) XXX_Size() int
- func (m *ProxyProtoIPResponse) XXX_Unmarshal(b []byte) error
- type Server
- type SignalHandler
- type TLSConfig
- type UnimplementedFakeServerServer
- func (*UnimplementedFakeServerServer) FailWithError(ctx context.Context, req *empty.Empty) (*empty.Empty, error)
- func (*UnimplementedFakeServerServer) FailWithHTTPError(ctx context.Context, req *FailWithHTTPErrorRequest) (*empty.Empty, error)
- func (*UnimplementedFakeServerServer) ReturnProxyProtoCallerIP(ctx context.Context, req *empty.Empty) (*ProxyProtoIPResponse, error)
- func (*UnimplementedFakeServerServer) Sleep(ctx context.Context, req *empty.Empty) (*empty.Empty, error)
- func (*UnimplementedFakeServerServer) StreamSleep(req *empty.Empty, srv FakeServer_StreamSleepServer) error
- func (*UnimplementedFakeServerServer) Succeed(ctx context.Context, req *empty.Empty) (*empty.Empty, error)
Constants ¶
const ( // DefaultNetwork the host resolves to multiple IP addresses, // Dial will try each IP address in order until one succeeds DefaultNetwork = "tcp" // NetworkTCPV4 for IPV4 only NetworkTCPV4 = "tcp4" )
Listen on the named network
Variables ¶
var ( ErrInvalidLengthFakeServer = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowFakeServer = fmt.Errorf("proto: integer overflow") )
Functions ¶
func BuildHTTPMiddleware ¶
func RegisterFakeServerServer ¶
func RegisterFakeServerServer(s *grpc.Server, srv FakeServerServer)
func RegisterInstrumentation ¶
RegisterInstrumentation on the given router.
func RegisterInstrumentationWithGatherer ¶
func RegisterInstrumentationWithGatherer(router *mux.Router, gatherer prometheus.Gatherer)
RegisterInstrumentationWithGatherer on the given router.
Types ¶
type Config ¶
type Config struct { MetricsNamespace string `yaml:"-"` // Set to > 1 to add native histograms to requestDuration. // See documentation for NativeHistogramBucketFactor in // https://pkg.go.dev/github.com/prometheus/client_golang/prometheus#HistogramOpts // for details. A generally useful value is 1.1. MetricsNativeHistogramFactor float64 `yaml:"-"` HTTPListenNetwork string `yaml:"http_listen_network"` HTTPListenAddress string `yaml:"http_listen_address"` HTTPListenPort int `yaml:"http_listen_port"` HTTPConnLimit int `yaml:"http_listen_conn_limit"` GRPCListenNetwork string `yaml:"grpc_listen_network"` GRPCListenAddress string `yaml:"grpc_listen_address"` GRPCListenPort int `yaml:"grpc_listen_port"` GRPCConnLimit int `yaml:"grpc_listen_conn_limit"` ProxyProtocolEnabled bool `yaml:"proxy_protocol_enabled"` CipherSuites string `yaml:"tls_cipher_suites"` MinVersion string `yaml:"tls_min_version"` HTTPTLSConfig TLSConfig `yaml:"http_tls_config"` GRPCTLSConfig TLSConfig `yaml:"grpc_tls_config"` RegisterInstrumentation bool `yaml:"register_instrumentation"` ReportGRPCCodesInInstrumentationLabel bool `yaml:"report_grpc_codes_in_instrumentation_label_enabled"` ReportHTTP4XXCodesInInstrumentationLabel bool `yaml:"-"` ExcludeRequestInLog bool `yaml:"-"` DisableRequestSuccessLog bool `yaml:"-"` PerTenantDurationInstrumentation middleware.PerTenantCallback `yaml:"-"` ServerGracefulShutdownTimeout time.Duration `yaml:"graceful_shutdown_timeout"` HTTPServerReadTimeout time.Duration `yaml:"http_server_read_timeout"` HTTPServerReadHeaderTimeout time.Duration `yaml:"http_server_read_header_timeout"` HTTPServerWriteTimeout time.Duration `yaml:"http_server_write_timeout"` HTTPServerIdleTimeout time.Duration `yaml:"http_server_idle_timeout"` HTTPLogClosedConnectionsWithoutResponse bool `yaml:"http_log_closed_connections_without_response_enabled"` GRPCOptions []grpc.ServerOption `yaml:"-"` GRPCMiddleware []grpc.UnaryServerInterceptor `yaml:"-"` GRPCStreamMiddleware []grpc.StreamServerInterceptor `yaml:"-"` HTTPMiddleware []middleware.Interface `yaml:"-"` Router *mux.Router `yaml:"-"` DoNotAddDefaultHTTPMiddleware bool `yaml:"-"` GRPCServerMaxRecvMsgSize int `yaml:"grpc_server_max_recv_msg_size"` GRPCServerMaxSendMsgSize int `yaml:"grpc_server_max_send_msg_size"` GRPCServerMaxConcurrentStreams uint `yaml:"grpc_server_max_concurrent_streams"` GRPCServerMaxConnectionIdle time.Duration `yaml:"grpc_server_max_connection_idle"` GRPCServerMaxConnectionAge time.Duration `yaml:"grpc_server_max_connection_age"` GRPCServerMaxConnectionAgeGrace time.Duration `yaml:"grpc_server_max_connection_age_grace"` GRPCServerTime time.Duration `yaml:"grpc_server_keepalive_time"` GRPCServerTimeout time.Duration `yaml:"grpc_server_keepalive_timeout"` GRPCServerMinTimeBetweenPings time.Duration `yaml:"grpc_server_min_time_between_pings"` GRPCServerPingWithoutStreamAllowed bool `yaml:"grpc_server_ping_without_stream_allowed"` GRPCServerNumWorkers int `yaml:"grpc_server_num_workers"` GRPCServerStatsTrackingEnabled bool `yaml:"grpc_server_stats_tracking_enabled"` GRPCServerRecvBufferPoolsEnabled bool `yaml:"grpc_server_recv_buffer_pools_enabled"` LogFormat string `yaml:"log_format"` LogLevel log.Level `yaml:"log_level"` Log gokit_log.Logger `yaml:"-"` LogSourceIPs bool `yaml:"log_source_ips_enabled"` LogSourceIPsFull bool `yaml:"log_source_ips_full"` LogSourceIPsHeader string `yaml:"log_source_ips_header"` LogSourceIPsRegex string `yaml:"log_source_ips_regex"` LogRequestHeaders bool `yaml:"log_request_headers"` LogRequestAtInfoLevel bool `yaml:"log_request_at_info_level_enabled"` LogRequestExcludeHeadersList string `yaml:"log_request_exclude_headers_list"` // If not set, default signal handler is used. SignalHandler SignalHandler `yaml:"-"` // If not set, default Prometheus registry is used. Registerer prometheus.Registerer `yaml:"-"` Gatherer prometheus.Gatherer `yaml:"-"` PathPrefix string `yaml:"http_path_prefix"` // This limiter is called for every started and finished gRPC request. GrpcMethodLimiter GrpcInflightMethodLimiter `yaml:"-"` }
Config for a Server
func (*Config) RegisterFlags ¶
RegisterFlags adds the flags required to config this to the given FlagSet
type FailWithHTTPErrorRequest ¶
type FailWithHTTPErrorRequest struct {
Code int32 `protobuf:"varint,1,opt,name=Code,proto3" json:"Code,omitempty"`
}
func (*FailWithHTTPErrorRequest) Descriptor ¶
func (*FailWithHTTPErrorRequest) Descriptor() ([]byte, []int)
func (*FailWithHTTPErrorRequest) Equal ¶
func (this *FailWithHTTPErrorRequest) Equal(that interface{}) bool
func (*FailWithHTTPErrorRequest) GetCode ¶
func (m *FailWithHTTPErrorRequest) GetCode() int32
func (*FailWithHTTPErrorRequest) GoString ¶
func (this *FailWithHTTPErrorRequest) GoString() string
func (*FailWithHTTPErrorRequest) Marshal ¶
func (m *FailWithHTTPErrorRequest) Marshal() (dAtA []byte, err error)
func (*FailWithHTTPErrorRequest) MarshalTo ¶
func (m *FailWithHTTPErrorRequest) MarshalTo(dAtA []byte) (int, error)
func (*FailWithHTTPErrorRequest) MarshalToSizedBuffer ¶
func (m *FailWithHTTPErrorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error)
func (*FailWithHTTPErrorRequest) ProtoMessage ¶
func (*FailWithHTTPErrorRequest) ProtoMessage()
func (*FailWithHTTPErrorRequest) Reset ¶
func (m *FailWithHTTPErrorRequest) Reset()
func (*FailWithHTTPErrorRequest) Size ¶
func (m *FailWithHTTPErrorRequest) Size() (n int)
func (*FailWithHTTPErrorRequest) String ¶
func (this *FailWithHTTPErrorRequest) String() string
func (*FailWithHTTPErrorRequest) Unmarshal ¶
func (m *FailWithHTTPErrorRequest) Unmarshal(dAtA []byte) error
func (*FailWithHTTPErrorRequest) XXX_DiscardUnknown ¶
func (m *FailWithHTTPErrorRequest) XXX_DiscardUnknown()
func (*FailWithHTTPErrorRequest) XXX_Marshal ¶
func (m *FailWithHTTPErrorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*FailWithHTTPErrorRequest) XXX_Merge ¶
func (m *FailWithHTTPErrorRequest) XXX_Merge(src proto.Message)
func (*FailWithHTTPErrorRequest) XXX_Size ¶
func (m *FailWithHTTPErrorRequest) XXX_Size() int
func (*FailWithHTTPErrorRequest) XXX_Unmarshal ¶
func (m *FailWithHTTPErrorRequest) XXX_Unmarshal(b []byte) error
type FakeServerClient ¶
type FakeServerClient interface { Succeed(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*empty.Empty, error) FailWithError(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*empty.Empty, error) FailWithHTTPError(ctx context.Context, in *FailWithHTTPErrorRequest, opts ...grpc.CallOption) (*empty.Empty, error) Sleep(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*empty.Empty, error) StreamSleep(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (FakeServer_StreamSleepClient, error) ReturnProxyProtoCallerIP(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*ProxyProtoIPResponse, error) }
FakeServerClient is the client API for FakeServer service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
func NewFakeServerClient ¶
func NewFakeServerClient(cc *grpc.ClientConn) FakeServerClient
type FakeServerServer ¶
type FakeServerServer interface { Succeed(context.Context, *empty.Empty) (*empty.Empty, error) FailWithError(context.Context, *empty.Empty) (*empty.Empty, error) FailWithHTTPError(context.Context, *FailWithHTTPErrorRequest) (*empty.Empty, error) Sleep(context.Context, *empty.Empty) (*empty.Empty, error) StreamSleep(*empty.Empty, FakeServer_StreamSleepServer) error ReturnProxyProtoCallerIP(context.Context, *empty.Empty) (*ProxyProtoIPResponse, error) }
FakeServerServer is the server API for FakeServer service.
type FakeServer_StreamSleepClient ¶
type FakeServer_StreamSleepClient interface { Recv() (*empty.Empty, error) grpc.ClientStream }
type FakeServer_StreamSleepServer ¶
type FakeServer_StreamSleepServer interface { Send(*empty.Empty) error grpc.ServerStream }
type GrpcInflightMethodLimiter ¶
type GrpcInflightMethodLimiter interface { // RPCCallStarting is called before request has been read into memory. // All that's known about the request at this point is grpc method name. // // Returned context is used during the remainder of the gRPC call. // // Returned error should be convertible to gRPC Status via status.FromError, // otherwise gRPC-server implementation-specific error will be returned to the client (codes.PermissionDenied in grpc@v1.55.0). RPCCallStarting(ctx context.Context, methodName string, md metadata.MD) (context.Context, error) RPCCallFinished(ctx context.Context) }
type Metrics ¶
type Metrics struct { TCPConnections *prometheus.GaugeVec TCPConnectionsLimit *prometheus.GaugeVec RequestDuration *prometheus.HistogramVec PerTenantRequestDuration *prometheus.HistogramVec ReceivedMessageSize *prometheus.HistogramVec SentMessageSize *prometheus.HistogramVec InflightRequests *prometheus.GaugeVec }
func NewServerMetrics ¶
type ProxyProtoIPResponse ¶
type ProxyProtoIPResponse struct {
IP string `protobuf:"bytes,1,opt,name=IP,proto3" json:"IP,omitempty"`
}
func (*ProxyProtoIPResponse) Descriptor ¶
func (*ProxyProtoIPResponse) Descriptor() ([]byte, []int)
func (*ProxyProtoIPResponse) Equal ¶
func (this *ProxyProtoIPResponse) Equal(that interface{}) bool
func (*ProxyProtoIPResponse) GetIP ¶
func (m *ProxyProtoIPResponse) GetIP() string
func (*ProxyProtoIPResponse) GoString ¶
func (this *ProxyProtoIPResponse) GoString() string
func (*ProxyProtoIPResponse) Marshal ¶
func (m *ProxyProtoIPResponse) Marshal() (dAtA []byte, err error)
func (*ProxyProtoIPResponse) MarshalTo ¶
func (m *ProxyProtoIPResponse) MarshalTo(dAtA []byte) (int, error)
func (*ProxyProtoIPResponse) MarshalToSizedBuffer ¶
func (m *ProxyProtoIPResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)
func (*ProxyProtoIPResponse) ProtoMessage ¶
func (*ProxyProtoIPResponse) ProtoMessage()
func (*ProxyProtoIPResponse) Reset ¶
func (m *ProxyProtoIPResponse) Reset()
func (*ProxyProtoIPResponse) Size ¶
func (m *ProxyProtoIPResponse) Size() (n int)
func (*ProxyProtoIPResponse) String ¶
func (this *ProxyProtoIPResponse) String() string
func (*ProxyProtoIPResponse) Unmarshal ¶
func (m *ProxyProtoIPResponse) Unmarshal(dAtA []byte) error
func (*ProxyProtoIPResponse) XXX_DiscardUnknown ¶
func (m *ProxyProtoIPResponse) XXX_DiscardUnknown()
func (*ProxyProtoIPResponse) XXX_Marshal ¶
func (m *ProxyProtoIPResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*ProxyProtoIPResponse) XXX_Merge ¶
func (m *ProxyProtoIPResponse) XXX_Merge(src proto.Message)
func (*ProxyProtoIPResponse) XXX_Size ¶
func (m *ProxyProtoIPResponse) XXX_Size() int
func (*ProxyProtoIPResponse) XXX_Unmarshal ¶
func (m *ProxyProtoIPResponse) XXX_Unmarshal(b []byte) error
type Server ¶
type Server struct { HTTP *mux.Router HTTPServer *http.Server GRPC *grpc.Server Log gokit_log.Logger Registerer prometheus.Registerer Gatherer prometheus.Gatherer // contains filtered or unexported fields }
Server wraps a HTTP and gRPC server, and some common initialization.
Servers will be automatically instrumented for Prometheus metrics.
func NewWithMetrics ¶
NewWithMetrics makes a new Server using the provided Metrics. It will not attempt to register the metrics, the user is responsible for doing so.
func (*Server) GRPCListenAddr ¶
GRPCListenAddr exposes `net.Addr` that `Server` is listening to for GRPC connections.
func (*Server) HTTPListenAddr ¶
HTTPListenAddr exposes `net.Addr` that `Server` is listening to for HTTP connections.
func (*Server) Run ¶
Run the server; blocks until SIGTERM (if signal handling is enabled), an error is received, or Stop() is called.
type SignalHandler ¶
type SignalHandler interface { // Starts the signals handler. This method is blocking, and returns only after signal is received, // or "Stop" is called. Loop() // Stop blocked "Loop" method. Stop() }
SignalHandler used by Server.
type TLSConfig ¶
type TLSConfig struct { TLSCert string `yaml:"cert" doc:"description=Server TLS certificate. This configuration parameter is YAML only."` TLSKey config.Secret `yaml:"key" doc:"description=Server TLS key. This configuration parameter is YAML only."` ClientCAsText string `` /* 140-byte string literal not displayed */ TLSCertPath string `yaml:"cert_file"` TLSKeyPath string `yaml:"key_file"` ClientAuth string `yaml:"client_auth_type"` ClientCAs string `yaml:"client_ca_file"` }
TLSConfig contains TLS parameters for Config.
type UnimplementedFakeServerServer ¶
type UnimplementedFakeServerServer struct { }
UnimplementedFakeServerServer can be embedded to have forward compatible implementations.
func (*UnimplementedFakeServerServer) FailWithError ¶
func (*UnimplementedFakeServerServer) FailWithHTTPError ¶
func (*UnimplementedFakeServerServer) FailWithHTTPError(ctx context.Context, req *FailWithHTTPErrorRequest) (*empty.Empty, error)
func (*UnimplementedFakeServerServer) ReturnProxyProtoCallerIP ¶
func (*UnimplementedFakeServerServer) ReturnProxyProtoCallerIP(ctx context.Context, req *empty.Empty) (*ProxyProtoIPResponse, error)
func (*UnimplementedFakeServerServer) StreamSleep ¶
func (*UnimplementedFakeServerServer) StreamSleep(req *empty.Empty, srv FakeServer_StreamSleepServer) error