httpserver

package module
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2022 License: MIT Imports: 11 Imported by: 3

README

httpserver

GitHub tag (latest by date) Codecov Test Go Report Card GitHub GoDoc

Basic instrumented HTTP server that I found myself writing over and over again.

Documentation

Authors

  • Christophe Lambin

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AvgMetrics added in v0.4.0

type AvgMetrics struct {
	// contains filtered or unexported fields
}

AvgMetrics uses a Summary to record request duration metrics. Use this if you are only interested in the average time to service requests.

func (*AvgMetrics) Collect added in v0.5.0

func (m *AvgMetrics) Collect(ch chan<- prometheus.Metric)

func (*AvgMetrics) Describe added in v0.5.0

func (m *AvgMetrics) Describe(ch chan<- *prometheus.Desc)

func (*AvgMetrics) GetRequestCountMetric added in v0.4.0

func (m *AvgMetrics) GetRequestCountMetric(method, path string, statusCode int) prometheus.Counter

GetRequestCountMetric returns the Counter to record request count

func (*AvgMetrics) GetRequestDurationMetric added in v0.4.0

func (m *AvgMetrics) GetRequestDurationMetric(method, path string) prometheus.Observer

GetRequestDurationMetric returns the Observer to record request duration

type Handler

type Handler struct {
	// Path of the endpoint (e.g. "/health"). Can be any path that's valid for gorilla/mux router's Path().
	Path string
	// Handler that implements the endpoint
	Handler http.Handler
	// Methods that the handler should support. If empty, defaults to http.MethodGet
	Methods []string
}

Handler contains an endpoint to be registered in the Server's HTTP server

type Metrics

type Metrics interface {
	GetRequestDurationMetric(method, path string) prometheus.Observer
	GetRequestCountMetric(method, path string, statusCode int) prometheus.Counter
	prometheus.Collector
}

Metrics interface contains the methods httpserver's middleware expects to record performance metrics

func NewAvgMetrics added in v0.4.0

func NewAvgMetrics(name string) Metrics

NewAvgMetrics creates a new AvgMetrics.

func NewSLOMetrics added in v0.4.0

func NewSLOMetrics(name string, buckets []float64) Metrics

NewSLOMetrics creates a new SLOMetrics, where latency is measured using a histogram with the provided list of buckets. If the list is empty, NewSLOMetrics will use prometheus.DefBuckets.

type Option added in v0.3.0

type Option interface {
	// contains filtered or unexported methods
}

Option specified configuration options for Server

type SLOMetrics added in v0.4.0

type SLOMetrics struct {
	// contains filtered or unexported fields
}

SLOMetrics uses a histogram to record request duration metrics. Use this to measure an SLO (e.g. 95% of all requests must be serviced below x seconds). SLOMetrics uses Prometheus' default buckets.

func (*SLOMetrics) Collect added in v0.5.0

func (m *SLOMetrics) Collect(ch chan<- prometheus.Metric)

func (*SLOMetrics) Describe added in v0.5.0

func (m *SLOMetrics) Describe(ch chan<- *prometheus.Desc)

func (*SLOMetrics) GetRequestCountMetric added in v0.4.0

func (m *SLOMetrics) GetRequestCountMetric(method, path string, statusCode int) prometheus.Counter

GetRequestCountMetric returns the Counter to record request count

func (*SLOMetrics) GetRequestDurationMetric added in v0.4.0

func (m *SLOMetrics) GetRequestDurationMetric(method, path string) prometheus.Observer

GetRequestDurationMetric returns the Observer to record request duration

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server implements a configurable HTTP Server. See the different WithXXX structs for available options.

func New added in v0.3.0

func New(options ...Option) (s *Server, err error)

New returns a Server with the specified options

func (*Server) GetPort added in v0.3.0

func (s *Server) GetPort() int

GetPort returns the HTTP Server's listening port

func (*Server) Run

func (s *Server) Run() error

Run starts the HTTP server

func (*Server) ServeHTTP added in v0.3.1

func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request)

ServeHTTP calls the server's handler. Mainly intended to be used in unit tests without starting the underlying HTTP server.

func (*Server) Shutdown

func (s *Server) Shutdown(timeout time.Duration) error

Shutdown performs a graceful shutdown of the HTTP server

type WithHandlers added in v0.3.0

type WithHandlers struct {
	Handlers []Handler
}

WithHandlers adds the specified handlers to the server

type WithMetrics added in v0.3.0

type WithMetrics struct {
	Metrics Metrics
}

WithMetrics will collect the specified metrics to instrument the Server's Handlers.

type WithPort added in v0.3.0

type WithPort struct {
	Port int
}

WithPort specifies the Server's listening port. If no port is specified, Server will listen on a random port. Use GetPort() to determine the actual listening port

type WithPrometheus added in v0.3.0

type WithPrometheus struct {
	Path string
}

WithPrometheus adds a Prometheus metrics endpoint to the server at the specified Path. Default path is "/metrics"

Jump to

Keyboard shortcuts

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