server

package
v0.0.0-...-dd9e68f Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2023 License: Apache-2.0 Imports: 32 Imported by: 166

Documentation

Index

Constants

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

This section is empty.

Functions

func RegisterFakeServerServer

func RegisterFakeServerServer(s *grpc.Server, srv FakeServerServer)

func RegisterInstrumentation

func RegisterInstrumentation(router *mux.Router)

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"`

	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"`
	ExcludeRequestInLog      bool `yaml:"-"`
	DisableRequestSuccessLog bool `yaml:"-"`

	ServerGracefulShutdownTimeout time.Duration `yaml:"graceful_shutdown_timeout"`
	HTTPServerReadTimeout         time.Duration `yaml:"http_server_read_timeout"`
	HTTPServerWriteTimeout        time.Duration `yaml:"http_server_write_timeout"`
	HTTPServerIdleTimeout         time.Duration `yaml:"http_server_idle_timeout"`

	GRPCOptions                   []grpc.ServerOption            `yaml:"-"`
	GRPCMiddleware                []grpc.UnaryServerInterceptor  `yaml:"-"`
	GRPCStreamMiddleware          []grpc.StreamServerInterceptor `yaml:"-"`
	HTTPMiddleware                []middleware.Interface         `yaml:"-"`
	Router                        *mux.Router                    `yaml:"-"`
	DoNotAddDefaultHTTPMiddleware bool                           `yaml:"-"`
	RouteHTTPToGRPC               bool                           `yaml:"-"`

	GPRCServerMaxRecvMsgSize           int           `yaml:"grpc_server_max_recv_msg_size"`
	GRPCServerMaxSendMsgSize           int           `yaml:"grpc_server_max_send_msg_size"`
	GPRCServerMaxConcurrentStreams     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"`

	LogFormat                    logging.Format    `yaml:"log_format"`
	LogLevel                     logging.Level     `yaml:"log_level"`
	Log                          logging.Interface `yaml:"-"`
	LogSourceIPs                 bool              `yaml:"log_source_ips_enabled"`
	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"`
}

Config for a Server

func (*Config) RegisterFlags

func (cfg *Config) RegisterFlags(f *flag.FlagSet)

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"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*FailWithHTTPErrorRequest) Descriptor

func (*FailWithHTTPErrorRequest) Descriptor() ([]byte, []int)

func (*FailWithHTTPErrorRequest) GetCode

func (m *FailWithHTTPErrorRequest) GetCode() int32

func (*FailWithHTTPErrorRequest) ProtoMessage

func (*FailWithHTTPErrorRequest) ProtoMessage()

func (*FailWithHTTPErrorRequest) Reset

func (m *FailWithHTTPErrorRequest) Reset()

func (*FailWithHTTPErrorRequest) String

func (m *FailWithHTTPErrorRequest) String() string

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

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
}

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 Metrics

type Metrics struct {
	TcpConnections      *prometheus.GaugeVec
	TcpConnectionsLimit *prometheus.GaugeVec
	RequestDuration     *prometheus.HistogramVec
	ReceivedMessageSize *prometheus.HistogramVec
	SentMessageSize     *prometheus.HistogramVec
	InflightRequests    *prometheus.GaugeVec
}

func NewServerMetrics

func NewServerMetrics(cfg Config) *Metrics

func (*Metrics) MustRegister

func (s *Metrics) MustRegister(registerer prometheus.Registerer)

type Server

type Server struct {
	GRPCOnHTTPServer *grpc.Server

	HTTP       *mux.Router
	HTTPServer *http.Server
	GRPC       *grpc.Server
	Log        logging.Interface
	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 New

func New(cfg Config) (*Server, error)

New makes a new Server. It will panic if the metrics cannot be registered.

func NewWithMetrics

func NewWithMetrics(cfg Config, metrics *Metrics) (*Server, error)

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

func (s *Server) GRPCListenAddr() net.Addr

GRPCListenAddr exposes `net.Addr` that `Server` is listening to for GRPC connections.

func (*Server) HTTPListenAddr

func (s *Server) HTTPListenAddr() net.Addr

HTTPListenAddr exposes `net.Addr` that `Server` is listening to for HTTP connections.

func (*Server) Run

func (s *Server) Run() error

Run the server; blocks until SIGTERM (if signal handling is enabled), an error is received, or Stop() is called.

func (*Server) Shutdown

func (s *Server) Shutdown()

Shutdown the server, gracefully. Should be defered after New().

func (*Server) Stop

func (s *Server) Stop()

Stop unblocks Run().

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 {
	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) FailWithError(ctx context.Context, req *empty.Empty) (*empty.Empty, error)

func (*UnimplementedFakeServerServer) FailWithHTTPError

func (*UnimplementedFakeServerServer) Sleep

func (*UnimplementedFakeServerServer) StreamSleep

func (*UnimplementedFakeServerServer) Succeed

Jump to

Keyboard shortcuts

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