123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package metric
- import (
- prom "github.com/prometheus/client_golang/prometheus"
- "github.com/tal-tech/go-zero/core/proc"
- )
- type (
- GaugeVecOpts VectorOpts
- GuageVec interface {
- Set(v float64, labels ...string)
- Inc(labels ...string)
- Add(v float64, labels ...string)
- close() bool
- }
- promGuageVec struct {
- gauge *prom.GaugeVec
- }
- )
- func NewGaugeVec(cfg *GaugeVecOpts) GuageVec {
- if cfg == nil {
- return nil
- }
- vec := prom.NewGaugeVec(
- prom.GaugeOpts{
- Namespace: cfg.Namespace,
- Subsystem: cfg.Subsystem,
- Name: cfg.Name,
- Help: cfg.Help,
- }, cfg.Labels)
- prom.MustRegister(vec)
- gv := &promGuageVec{
- gauge: vec,
- }
- proc.AddShutdownListener(func() {
- gv.close()
- })
- return gv
- }
- func (gv *promGuageVec) Inc(labels ...string) {
- gv.gauge.WithLabelValues(labels...).Inc()
- }
- func (gv *promGuageVec) Add(v float64, lables ...string) {
- gv.gauge.WithLabelValues(lables...).Add(v)
- }
- func (gv *promGuageVec) Set(v float64, lables ...string) {
- gv.gauge.WithLabelValues(lables...).Set(v)
- }
- func (gv *promGuageVec) close() bool {
- return prom.Unregister(gv.gauge)
- }
|