mirror of
https://github.com/kopia/kopia.git
synced 2026-05-11 16:25:13 -04:00
Bumps the telemetry-dependencies group with 1 update in the / directory: [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang). Updates `github.com/prometheus/client_golang` from 1.19.1 to 1.20.1 - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/v1.20.1/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.19.1...v1.20.1) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-minor dependency-group: telemetry-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package metrics
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"github.com/prometheus/client_golang/prometheus/promauto"
|
|
"golang.org/x/exp/maps"
|
|
)
|
|
|
|
const (
|
|
prometheusCounterSuffix = "_total"
|
|
prometheusPrefix = "kopia_"
|
|
)
|
|
|
|
//nolint:gochecknoglobals
|
|
var (
|
|
promCacheMutex sync.Mutex
|
|
// +checklocks:promCacheMutex
|
|
promCounters = map[string]*prometheus.CounterVec{}
|
|
// +checklocks:promCacheMutex
|
|
promHistograms = map[string]*prometheus.HistogramVec{}
|
|
)
|
|
|
|
func getPrometheusCounter(opts prometheus.CounterOpts, labels map[string]string) prometheus.Counter {
|
|
promCacheMutex.Lock()
|
|
defer promCacheMutex.Unlock()
|
|
|
|
prom := promCounters[opts.Name]
|
|
if prom == nil {
|
|
prom = promauto.NewCounterVec(opts, maps.Keys(labels))
|
|
|
|
promCounters[opts.Name] = prom
|
|
}
|
|
|
|
return prom.WithLabelValues(maps.Values(labels)...)
|
|
}
|
|
|
|
func getPrometheusHistogram(opts prometheus.HistogramOpts, labels map[string]string) prometheus.Observer { //nolint:gocritic
|
|
promCacheMutex.Lock()
|
|
defer promCacheMutex.Unlock()
|
|
|
|
prom := promHistograms[opts.Name]
|
|
if prom == nil {
|
|
prom = promauto.NewHistogramVec(opts, maps.Keys(labels))
|
|
|
|
promHistograms[opts.Name] = prom
|
|
}
|
|
|
|
return prom.WithLabelValues(maps.Values(labels)...)
|
|
}
|