Back to godoc.org

Package prometheus

v0.9.1
Latest Go to latest

The highest tagged major version is .

Published: Mar 31, 2020 | License: MIT | Module: github.com/lowply/echo-contrib

Overview

Package prometheus provides middleware to add Prometheus metrics.

Example: ``` package main import (

"github.com/labstack/echo/v4"
"github.com/labstack/echo-contrib/prometheus"

) func main() {

e := echo.New()
// Enable metrics middleware
p := prometheus.NewPrometheus("echo", nil)
p.Use(e)

e.Logger.Fatal(e.Start(":1323"))

} ```

Index

func NewMetric

func NewMetric(m *Metric, subsystem string) prometheus.Collector

NewMetric associates prometheus.Collector based on Metric.Type

type Metric

type Metric struct {
	MetricCollector prometheus.Collector
	ID              string
	Name            string
	Description     string
	Type            string
	Args            []string
}

Metric is a definition for the name, description, type, ID, and prometheus.Collector type (i.e. CounterVec, Summary, etc) of each metric

type Prometheus

type Prometheus struct {
	Ppg PushGateway

	MetricsList []*Metric
	MetricsPath string
	Subsystem   string
	Skipper     middleware.Skipper

	RequestCounterURLLabelMappingFunc RequestCounterURLLabelMappingFunc

	// Context string to use as a prometheus URL label
	URLLabelFromContext string
	// contains filtered or unexported fields
}

Prometheus contains the metrics gathered by the instance and its path

func NewPrometheus

func NewPrometheus(subsystem string, skipper middleware.Skipper, customMetricsList ...[]*Metric) *Prometheus

NewPrometheus generates a new set of metrics with a certain subsystem name

func (*Prometheus) HandlerFunc

func (p *Prometheus) HandlerFunc(next echo.HandlerFunc) echo.HandlerFunc

HandlerFunc defines handler function for middleware

func (*Prometheus) SetMetricsPath

func (p *Prometheus) SetMetricsPath(e *echo.Echo)

SetMetricsPath set metrics paths

func (*Prometheus) SetPushGateway

func (p *Prometheus) SetPushGateway(pushGatewayURL, metricsURL string, pushIntervalSeconds time.Duration)

SetPushGateway sends metrics to a remote pushgateway exposed on pushGatewayURL every pushIntervalSeconds. Metrics are fetched from metricsURL

func (*Prometheus) SetPushGatewayJob

func (p *Prometheus) SetPushGatewayJob(j string)

SetPushGatewayJob job name, defaults to "echo"

func (*Prometheus) Use

func (p *Prometheus) Use(e *echo.Echo)

Use adds the middleware to the Echo engine.

type PushGateway

type PushGateway struct {
	// Push interval in seconds
	PushIntervalSeconds time.Duration

	// Push Gateway URL in format http://domain:port
	// where JOBNAME can be any string of your choice
	PushGatewayURL string

	// Local metrics URL where metrics are fetched from, this could be ommited in the future
	// if implemented using prometheus common/expfmt instead
	MetricsURL string

	// pushgateway job name, defaults to "echo"
	Job string
}

PushGateway contains the configuration for pushing to a Prometheus pushgateway (optional)

type RequestCounterURLLabelMappingFunc

type RequestCounterURLLabelMappingFunc func(c echo.Context) string

RequestCounterURLLabelMappingFunc is a function which can be supplied to the middleware to control the cardinality of the request counter's "url" label, which might be required in some contexts. For instance, if for a "/customer/:name" route you don't want to generate a time series for every possible customer name, you could use this function:

func(c echo.Context) string {

url := c.Request.URL.Path
for _, p := range c.Params {
	if p.Key == "name" {
		url = strings.Replace(url, p.Value, ":name", 1)
		break
	}
}
return url

}

which would map "/customer/alice" and "/customer/bob" to their template "/customer/:name".

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier