Documentation ¶
Overview ¶
Package ginprom is a library to instrument a gin server and expose a /metrics endpoint for Prometheus to scrape, keeping a low cardinality by preserving the path parameters name in the prometheus label
Index ¶
- Variables
- type Prometheus
- func (p *Prometheus) AddCounterValue(name string, labelValues []string, value float64) error
- func (p *Prometheus) AddCustomCounter(name, help string, labels []string)
- func (p *Prometheus) AddCustomGauge(name, help string, labels []string)
- func (p *Prometheus) AddCustomHistogram(name, help string, labels []string)
- func (p *Prometheus) AddCustomHistogramValue(name string, labelValues []string, value float64) error
- func (p *Prometheus) AddGaugeValue(name string, labelValues []string, value float64) error
- func (p *Prometheus) DecrementGaugeValue(name string, labelValues []string) error
- func (p *Prometheus) IncrementCounterValue(name string, labelValues []string) error
- func (p *Prometheus) IncrementGaugeValue(name string, labelValues []string) error
- func (p *Prometheus) Instrument() gin.HandlerFunc
- func (p *Prometheus) SetGaugeValue(name string, labelValues []string, value float64) error
- func (p *Prometheus) SubGaugeValue(name string, labelValues []string, value float64) error
- func (p *Prometheus) Use(e *gin.Engine)
- type PrometheusOption
- func BucketSize(b []float64) PrometheusOption
- func CustomCounterLabels(labels []string, f func(c *gin.Context) map[string]string) PrometheusOption
- func Engine(e *gin.Engine) PrometheusOption
- func HandlerNameFunc(f func(c *gin.Context) string) PrometheusOption
- func HandlerOpts(opts promhttp.HandlerOpts) PrometheusOption
- func Ignore(paths ...string) PrometheusOption
- func Namespace(ns string) PrometheusOption
- func Path(path string) PrometheusOption
- func Registry(r *prometheus.Registry) PrometheusOption
- func RequestCounterMetricName(reqCntMetricName string) PrometheusOption
- func RequestDurationMetricName(reqDurMetricName string) PrometheusOption
- func RequestPathFunc(f func(c *gin.Context) string) PrometheusOption
- func RequestSizeMetricName(reqSzMetricName string) PrometheusOption
- func ResponseSizeMetricName(resDurMetricName string) PrometheusOption
- func Subsystem(sub string) PrometheusOption
- func Token(token string) PrometheusOption
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ErrCustomCounter = errors.New("error finding custom counter")
ErrCustomCounter is returned when the custom counter can't be found.
var ErrCustomGauge = errors.New("error finding custom gauge")
ErrCustomGauge is returned when the custom gauge can't be found.
var ErrInvalidToken = errors.New("invalid or missing token")
ErrInvalidToken is returned when the provided token is invalid or missing.
Functions ¶
This section is empty.
Types ¶
type Prometheus ¶
type Prometheus struct { MetricsPath string Namespace string Subsystem string Token string Ignored pmapb Engine *gin.Engine BucketsSize []float64 Registry *prometheus.Registry HandlerNameFunc func(c *gin.Context) string RequestPathFunc func(c *gin.Context) string HandlerOpts promhttp.HandlerOpts RequestCounterMetricName string RequestDurationMetricName string RequestSizeMetricName string ResponseSizeMetricName string // contains filtered or unexported fields }
Prometheus contains the metrics gathered by the instance and its path.
func New ¶
func New(options ...PrometheusOption) *Prometheus
New will initialize a new Prometheus instance with the given options. If no options are passed, sane defaults are used. If a router is passed using the Engine() option, this instance will automatically bind to it.
func (*Prometheus) AddCounterValue ¶ added in v1.7.8
func (p *Prometheus) AddCounterValue(name string, labelValues []string, value float64) error
AddCounterValue adds value to custom counter.
func (*Prometheus) AddCustomCounter ¶ added in v1.7.8
func (p *Prometheus) AddCustomCounter(name, help string, labels []string)
AddCustomCounter adds a custom counter and registers it.
func (*Prometheus) AddCustomGauge ¶ added in v1.3.0
func (p *Prometheus) AddCustomGauge(name, help string, labels []string)
AddCustomGauge adds a custom gauge and registers it.
func (*Prometheus) AddCustomHistogram ¶ added in v1.8.1
func (p *Prometheus) AddCustomHistogram(name, help string, labels []string)
AddCustomCounter adds a custom counter and registers it.
func (*Prometheus) AddCustomHistogramValue ¶ added in v1.8.1
func (p *Prometheus) AddCustomHistogramValue(name string, labelValues []string, value float64) error
AddCustomHistogramValue adds value to custom counter.
func (*Prometheus) AddGaugeValue ¶ added in v1.7.2
func (p *Prometheus) AddGaugeValue(name string, labelValues []string, value float64) error
AddGaugeValue adds value to custom gauge.
func (*Prometheus) DecrementGaugeValue ¶ added in v1.3.0
func (p *Prometheus) DecrementGaugeValue(name string, labelValues []string) error
DecrementGaugeValue decrements a custom gauge.
func (*Prometheus) IncrementCounterValue ¶ added in v1.7.8
func (p *Prometheus) IncrementCounterValue(name string, labelValues []string) error
IncrementCounterValue increments a custom counter.
func (*Prometheus) IncrementGaugeValue ¶ added in v1.3.0
func (p *Prometheus) IncrementGaugeValue(name string, labelValues []string) error
IncrementGaugeValue increments a custom gauge.
func (*Prometheus) Instrument ¶
func (p *Prometheus) Instrument() gin.HandlerFunc
Instrument is a gin middleware that can be used to generate metrics for a single handler
func (*Prometheus) SetGaugeValue ¶ added in v1.3.0
func (p *Prometheus) SetGaugeValue(name string, labelValues []string, value float64) error
SetGaugeValue sets gauge to value.
func (*Prometheus) SubGaugeValue ¶ added in v1.7.2
func (p *Prometheus) SubGaugeValue(name string, labelValues []string, value float64) error
SubGaugeValue adds gauge to value.
func (*Prometheus) Use ¶
func (p *Prometheus) Use(e *gin.Engine)
Use is a method that should be used if the engine is set after middleware initialization.
type PrometheusOption ¶ added in v1.7.11
type PrometheusOption func(*Prometheus)
func BucketSize ¶ added in v1.4.0
func BucketSize(b []float64) PrometheusOption
BucketSize is used to define the default bucket size when initializing with New.
func CustomCounterLabels ¶ added in v1.8.0
func Engine ¶
func Engine(e *gin.Engine) PrometheusOption
Engine is an option allowing to set the gin engine when intializing with New. Example: r := gin.Default() p := ginprom.New(Engine(r))
func HandlerNameFunc ¶ added in v1.7.7
func HandlerNameFunc(f func(c *gin.Context) string) PrometheusOption
HandlerNameFunc is an option allowing to set the HandlerNameFunc with New. Use this option if you want to override the default behavior (i.e. using (*gin.Context).HandlerName). This is useful when wanting to group different functions under the same "handler" label or when using gin with decorated handlers Example: r := gin.Default() p := ginprom.New(HandlerNameFunc(func (c *gin.Context) string { return "my handler" }))
func HandlerOpts ¶ added in v1.8.0
func HandlerOpts(opts promhttp.HandlerOpts) PrometheusOption
HandlerOpts is an option allowing to set the promhttp.HandlerOpts. Use this option if you want to override the default zero value.
func Ignore ¶
func Ignore(paths ...string) PrometheusOption
Ignore is used to disable instrumentation on some routes.
func Namespace ¶ added in v1.1.0
func Namespace(ns string) PrometheusOption
Namespace is an option allowing to set the namespace when initializing with New.
func Path ¶
func Path(path string) PrometheusOption
Path is an option allowing to set the metrics path when initializing with New.
Example ¶
Set the path (endpoint) where the metrics will be served
r := gin.New() p := New(Engine(r), Path("/metrics")) r.Use(p.Instrument())
Output:
func Registry ¶ added in v1.5.0
func Registry(r *prometheus.Registry) PrometheusOption
Registry is an option allowing to set a *prometheus.Registry with New. Use this option if you want to use a custom Registry instead of a global one that prometheus client uses by default Example: r := gin.Default() p := ginprom.New(Registry(r))
func RequestCounterMetricName ¶ added in v1.7.0
func RequestCounterMetricName(reqCntMetricName string) PrometheusOption
RequestCounterMetricName is an option allowing to set the request counter metric name.
func RequestDurationMetricName ¶ added in v1.7.0
func RequestDurationMetricName(reqDurMetricName string) PrometheusOption
RequestDurationMetricName is an option allowing to set the request duration metric name.
func RequestPathFunc ¶ added in v1.7.10
func RequestPathFunc(f func(c *gin.Context) string) PrometheusOption
RequestPathFunc is an option allowing to set the RequestPathFunc with New. Use this option if you want to override the default behavior (i.e. using (*gin.Context).FullPath). This is useful when wanting to group different requests under the same "path" label or when wanting to process unknown routes (the default (*gin.Context).FullPath return an empty string for unregistered routes). Note that requests for which f returns the empty string are ignored. To specifically ignore certain paths, see the Ignore option. Example:
r := gin.Default() p := ginprom.New(RequestPathFunc(func (c *gin.Context) string { if fullpath := c.FullPath(); fullpath != "" { return fullpath } return "<unknown>" }))
func RequestSizeMetricName ¶ added in v1.7.0
func RequestSizeMetricName(reqSzMetricName string) PrometheusOption
RequestSizeMetricName is an option allowing to set the request size metric name.
func ResponseSizeMetricName ¶ added in v1.7.0
func ResponseSizeMetricName(resDurMetricName string) PrometheusOption
ResponseSizeMetricName is an option allowing to set the response size metric name.
func Subsystem ¶
func Subsystem(sub string) PrometheusOption
Subsystem is an option allowing to set the subsystem when initializing with New.
func Token ¶ added in v1.2.0
func Token(token string) PrometheusOption
Token is an option allowing to set the bearer token in prometheus with New. Example: ginprom.New(ginprom.Token("your_custom_token"))
Example ¶
Set a secret token that is required to access the endpoint
r := gin.New() p := New(Engine(r), Token("supersecrettoken")) r.Use(p.Instrument())
Output: