github.com/hyperledger-labs/bdls@v2.1.1+incompatible/common/metrics/prometheus/provider.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package prometheus
     8  
     9  import (
    10  	kitmetrics "github.com/go-kit/kit/metrics"
    11  	"github.com/go-kit/kit/metrics/prometheus"
    12  	"github.com/hyperledger/fabric/common/metrics"
    13  	prom "github.com/prometheus/client_golang/prometheus"
    14  )
    15  
    16  type Provider struct{}
    17  
    18  func (p *Provider) NewCounter(o metrics.CounterOpts) metrics.Counter {
    19  	return &Counter{
    20  		Counter: prometheus.NewCounterFrom(
    21  			prom.CounterOpts{
    22  				Namespace: o.Namespace,
    23  				Subsystem: o.Subsystem,
    24  				Name:      o.Name,
    25  				Help:      o.Help,
    26  			},
    27  			o.LabelNames,
    28  		),
    29  	}
    30  }
    31  
    32  func (p *Provider) NewGauge(o metrics.GaugeOpts) metrics.Gauge {
    33  	return &Gauge{
    34  		Gauge: prometheus.NewGaugeFrom(
    35  			prom.GaugeOpts{
    36  				Namespace: o.Namespace,
    37  				Subsystem: o.Subsystem,
    38  				Name:      o.Name,
    39  				Help:      o.Help,
    40  			},
    41  			o.LabelNames,
    42  		),
    43  	}
    44  }
    45  
    46  func (p *Provider) NewHistogram(o metrics.HistogramOpts) metrics.Histogram {
    47  	return &Histogram{
    48  		Histogram: prometheus.NewHistogramFrom(
    49  			prom.HistogramOpts{
    50  				Namespace: o.Namespace,
    51  				Subsystem: o.Subsystem,
    52  				Name:      o.Name,
    53  				Help:      o.Help,
    54  				Buckets:   o.Buckets,
    55  			},
    56  			o.LabelNames,
    57  		),
    58  	}
    59  }
    60  
    61  type Counter struct{ kitmetrics.Counter }
    62  
    63  func (c *Counter) With(labelValues ...string) metrics.Counter {
    64  	return &Counter{Counter: c.Counter.With(labelValues...)}
    65  }
    66  
    67  type Gauge struct{ kitmetrics.Gauge }
    68  
    69  func (g *Gauge) With(labelValues ...string) metrics.Gauge {
    70  	return &Gauge{Gauge: g.Gauge.With(labelValues...)}
    71  }
    72  
    73  type Histogram struct{ kitmetrics.Histogram }
    74  
    75  func (h *Histogram) With(labelValues ...string) metrics.Histogram {
    76  	return &Histogram{Histogram: h.Histogram.With(labelValues...)}
    77  }