package echoprometheus

import "github.com/labstack/echo-contrib/echoprometheus"

Package echoprometheus provides middleware to add Prometheus metrics.

Index

Functions

func NewHandler

func NewHandler() echo.HandlerFunc

NewHandler creates new instance of Handler using Prometheus default registry.

func NewHandlerWithConfig

func NewHandlerWithConfig(config HandlerConfig) echo.HandlerFunc

NewHandlerWithConfig creates new instance of Handler using given configuration.

func NewMiddleware

func NewMiddleware(subsystem string) echo.MiddlewareFunc

NewMiddleware creates new instance of middleware using Prometheus default registry.

func NewMiddlewareWithConfig

func NewMiddlewareWithConfig(config MiddlewareConfig) echo.MiddlewareFunc

NewMiddlewareWithConfig creates new instance of middleware using given configuration.

func RunPushGatewayGatherer

func RunPushGatewayGatherer(ctx context.Context, config PushGatewayConfig) error

RunPushGatewayGatherer starts pushing collected metrics and waits for it context to complete or ErrorHandler to return error.

Example: ```

go func() {
	config := echoprometheus.PushGatewayConfig{
		PushGatewayURL: "https://host:9080",
		PushInterval:   10 * time.Millisecond,
	}
	if err := echoprometheus.RunPushGatewayGatherer(context.Background(), config); !errors.Is(err, context.Canceled) {
		log.Fatal(err)
	}
}()

```

func WriteGatheredMetrics

func WriteGatheredMetrics(writer io.Writer, gatherer prometheus.Gatherer) error

WriteGatheredMetrics gathers collected metrics and writes them to given writer

Types

type HandlerConfig

type HandlerConfig struct {
	// Gatherer sets the prometheus.Gatherer instance the middleware will use when generating the metric endpoint handler.
	// Defaults to: prometheus.DefaultGatherer
	Gatherer prometheus.Gatherer
}

HandlerConfig contains the configuration for creating HTTP handler for metrics.

type LabelValueFunc

type LabelValueFunc func(c echo.Context, err error) string

type MiddlewareConfig

type MiddlewareConfig struct {
	// Skipper defines a function to skip middleware.
	Skipper middleware.Skipper

	// Namespace is components of the fully-qualified name of the Metric (created by joining Namespace,Subsystem and Name components with "_")
	// Optional
	Namespace string

	// Subsystem is components of the fully-qualified name of the Metric (created by joining Namespace,Subsystem and Name components with "_")
	// Defaults to: "echo"
	Subsystem string

	// LabelFuncs allows adding custom labels in addition to default labels. When key has same name with default label
	// it replaces default one.
	LabelFuncs map[string]LabelValueFunc

	// HistogramOptsFunc allows to change options for metrics of type histogram before metric is registered to Registerer
	HistogramOptsFunc func(opts prometheus.HistogramOpts) prometheus.HistogramOpts

	// CounterOptsFunc allows to change options for metrics of type counter before metric is registered to Registerer
	CounterOptsFunc func(opts prometheus.CounterOpts) prometheus.CounterOpts

	// Registerer sets the prometheus.Registerer instance the middleware will register these metrics with.
	// Defaults to: prometheus.DefaultRegisterer
	Registerer prometheus.Registerer

	// BeforeNext is callback that is executed before next middleware/handler is called. Useful for case when you have own
	// metrics that need data to be stored for AfterNext.
	BeforeNext func(c echo.Context)

	// AfterNext is callback that is executed after next middleware/handler returns. Useful for case when you have own
	// metrics that need incremented/observed.
	AfterNext func(c echo.Context, err error)

	// If DoNotUseRequestPathFor404 is true, all 404 responses (due to non-matching route) will have the same `url` label and
	// thus won't generate new metrics.
	DoNotUseRequestPathFor404 bool
	// contains filtered or unexported fields
}

MiddlewareConfig contains the configuration for creating prometheus middleware collecting several default metrics.

func (MiddlewareConfig) ToMiddleware

func (conf MiddlewareConfig) ToMiddleware() (echo.MiddlewareFunc, error)

ToMiddleware converts configuration to middleware or returns an error.

type PushGatewayConfig

type PushGatewayConfig struct {
	// PushGatewayURL is push gateway URL in format http://domain:port
	PushGatewayURL string

	// PushInterval in ticker interval for pushing gathered metrics to the Gateway
	// Defaults to: 1 minute
	PushInterval time.Duration

	// Gatherer sets the prometheus.Gatherer instance the middleware will use when generating the metric endpoint handler.
	// Defaults to: prometheus.DefaultGatherer
	Gatherer prometheus.Gatherer

	// ErrorHandler is function that is called when errors occur. When callback returns error StartPushGateway also returns.
	ErrorHandler func(err error) error

	// ClientTransport specifies the mechanism by which individual HTTP POST requests are made.
	// Defaults to: http.DefaultTransport
	ClientTransport http.RoundTripper
}

PushGatewayConfig contains the configuration for pushing to a Prometheus push gateway.

Source Files

prometheus.go

Version
v0.16.0
Published
Mar 21, 2024
Platform
windows/amd64
Imports
15 packages
Last checked
47 minutes ago

Tools for package owners.