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 HostFunc(f func(c *gin.Context) string) PrometheusOption
- func Ignore(paths ...string) PrometheusOption
- func Namespace(ns string) PrometheusOption
- func NativeHistogram(nh bool) PrometheusOption
- func NativeHistogramBucketFactor(nhbf float64) PrometheusOption
- func NativeHistogramMaxBucketNumber(nhmbn uint32) PrometheusOption
- func NativeHistogramMinResetDuration(nhmrd time.Duration) 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
HostFunc func(c *gin.Context) string
HandlerOpts promhttp.HandlerOpts
NativeHistogramBucketFactor float64
NativeHistogramMaxBucketNumber uint32
NativeHistogramMinResetDuration time.Duration
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 HostFunc ¶ added in v1.8.3
func HostFunc(f func(c *gin.Context) string) PrometheusOption
HostFunc is an option allowing to set the HostFunc with New. Use this option if you want to override the default behavior (i.e. using c.Request.Host). This is useful to reduce metric cardinality when the Host header varies (e.g. dynamic subdomains) but requests are handled the same. Example: r := gin.Default() p := ginprom.New(HostFunc(func(c *gin.Context) string { return "my-service" }))
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 NativeHistogram ¶ added in v1.8.2
func NativeHistogram(nh bool) PrometheusOption
func NativeHistogramBucketFactor ¶ added in v1.8.2
func NativeHistogramBucketFactor(nhbf float64) PrometheusOption
func NativeHistogramMaxBucketNumber ¶ added in v1.8.2
func NativeHistogramMaxBucketNumber(nhmbn uint32) PrometheusOption
func NativeHistogramMinResetDuration ¶ added in v1.8.2
func NativeHistogramMinResetDuration(nhmrd time.Duration) PrometheusOption
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())
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())