mirror of
https://github.com/docker/cli.git
synced 2026-08-28 10:05:17 -05:00
- Add support for creating timers with custom histogram buckets. - Update `github.com/prometheus/client_golang` to v1.20.5. - Update the minimum supported Go version to Go 1.21. - Improve HTTP handler instrumentation, including minor performance improvements and cleanup. - Avoid mutating shared label maps when creating namespaces and metrics. - Encapsulate the Prometheus collector used by `HTTPMetric`. - Improve package and API documentation. - Update `golang.org/x/sys` and other dependencies. full diff: https://github.com/docker/go-metrics/compare/v0.0.1...v0.1.0 Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package metrics
|
|
|
|
import "github.com/prometheus/client_golang/prometheus"
|
|
|
|
// Counter is a metrics that can only increment its current count
|
|
type Counter interface {
|
|
// Inc adds Sum(vs) to the counter. Sum(vs) must be positive.
|
|
//
|
|
// If len(vs) == 0, increments the counter by 1.
|
|
Inc(vs ...float64)
|
|
}
|
|
|
|
// LabeledCounter is counter that must have labels populated before use.
|
|
type LabeledCounter interface {
|
|
WithValues(vs ...string) Counter
|
|
}
|
|
|
|
type labeledCounter struct {
|
|
pc *prometheus.CounterVec
|
|
}
|
|
|
|
func (lc *labeledCounter) WithValues(vs ...string) Counter {
|
|
return &counter{pc: lc.pc.WithLabelValues(vs...)}
|
|
}
|
|
|
|
// Describe implements [prometheus.Collector].
|
|
func (lc *labeledCounter) Describe(ch chan<- *prometheus.Desc) {
|
|
lc.pc.Describe(ch)
|
|
}
|
|
|
|
// Collect implements [prometheus.Collector].
|
|
func (lc *labeledCounter) Collect(ch chan<- prometheus.Metric) {
|
|
lc.pc.Collect(ch)
|
|
}
|
|
|
|
type counter struct {
|
|
pc prometheus.Counter
|
|
}
|
|
|
|
func (c *counter) Inc(vs ...float64) {
|
|
if len(vs) == 0 {
|
|
c.pc.Inc()
|
|
}
|
|
|
|
c.pc.Add(sumFloat64(vs...))
|
|
}
|
|
|
|
// Describe implements [prometheus.Collector].
|
|
func (c *counter) Describe(ch chan<- *prometheus.Desc) {
|
|
c.pc.Describe(ch)
|
|
}
|
|
|
|
// Collect implements [prometheus.Collector].
|
|
func (c *counter) Collect(ch chan<- prometheus.Metric) {
|
|
c.pc.Collect(ch)
|
|
}
|