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 }