httpserver

package module
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 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

View Source
var (
	// DefBuckets contains the default buckets for the Duration histogram metric
	DefBuckets = []float64{.001, .01, .1, 1, 10}
)

Functions

This section is empty.

Types

type Handler

type Handler struct {
	// Path of the endpoint (e.g. "/health"). Must include the leading /
	Path string
	// Handler that implements the endpoint
	Handler http.Handler
	// Methods that the handler should support. If empty, http.MethodGet is the default
	Methods []string
}

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

type Metrics

type Metrics struct {
	// RequestCounter records the number of times a handler was called. This is a prometheus.CounterVec with three labels: "method", "path" and "code".
	// By default, a metric called "http_requests_totals" will be used
	RequestCounter *prometheus.CounterVec
	// DurationHistogram records the latency of each handler call. This is a prometheus.HistogramVec with two labels: "method" and "path".
	// By default, a metric called "http_requests_duration_seconds" will be used, with DefBuckets as the histogram's buckets.
	DurationHistogram *prometheus.HistogramVec
}

Metrics contains the metrics that will be captured while serving HTTP requests. If these are not provided then Server will create default metrics and register them with Prometheus' default registry.

func NewMetrics added in v0.3.0

func NewMetrics(name string) *Metrics

func (*Metrics) Register added in v0.3.0

func (m *Metrics) Register(r prometheus.Registerer)

type Option added in v0.3.0

type Option interface {
	Apply(server *Server)
}

Option specified configuration options for Server

type Server

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

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

func (WithHandlers) Apply added in v0.3.0

func (o WithHandlers) Apply(s *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.

func (WithMetrics) Apply added in v0.3.0

func (o WithMetrics) Apply(s *Server)

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

func (WithPort) Apply added in v0.3.0

func (o WithPort) Apply(s *Server)

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"

func (WithPrometheus) Apply added in v0.3.0

func (o WithPrometheus) Apply(s *Server)

Jump to

Keyboard shortcuts

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