Documentation ¶
Overview ¶
Package echoprometheus provides middleware to add Prometheus metrics.
Index ¶
- func NewHandler() echo.HandlerFunc
- func NewHandlerWithConfig(config HandlerConfig) echo.HandlerFunc
- func NewMiddleware(subsystem string) echo.MiddlewareFunc
- func NewMiddlewareWithConfig(config MiddlewareConfig) echo.MiddlewareFunc
- func RunPushGatewayGatherer(ctx context.Context, config PushGatewayConfig) error
- func WriteGatheredMetrics(writer io.Writer, gatherer prometheus.Gatherer) error
- type HandlerConfig
- type LabelValueFunc
- type MiddlewareConfig
- type PushGatewayConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
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 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.