github.com/grafana/pyroscope@v1.18.0/pkg/storegateway/metrics.go (about)

     1  package storegateway
     2  
     3  import (
     4  	"github.com/grafana/pyroscope/pkg/phlaredb"
     5  	"github.com/grafana/pyroscope/pkg/util"
     6  
     7  	"github.com/prometheus/client_golang/prometheus"
     8  )
     9  
    10  type Metrics struct {
    11  	registerer prometheus.Registerer
    12  
    13  	blockMetrics *phlaredb.BlocksMetrics
    14  
    15  	synced            *prometheus.GaugeVec
    16  	blockLoads        prometheus.Counter
    17  	blockLoadFailures prometheus.Counter
    18  	blockDrops        prometheus.Counter
    19  	blockDropFailures prometheus.Counter
    20  }
    21  
    22  func NewBucketStoreMetrics(reg prometheus.Registerer) *Metrics {
    23  	return &Metrics{
    24  		registerer:   reg,
    25  		blockMetrics: phlaredb.NewBlocksMetrics(reg),
    26  
    27  		synced: util.RegisterOrGet(reg, prometheus.NewGaugeVec(
    28  			prometheus.GaugeOpts{
    29  				Subsystem: "blocks_meta",
    30  				Name:      "synced",
    31  				Help:      "Number of block metadata synced",
    32  			}, []string{"state"})),
    33  
    34  		blockLoads: util.RegisterOrGet(reg, prometheus.NewCounter(prometheus.CounterOpts{
    35  			Name: "pyroscope_bucket_store_block_loads_total",
    36  			Help: "Total number of remote block loading attempts.",
    37  		})),
    38  
    39  		blockLoadFailures: util.RegisterOrGet(reg, prometheus.NewCounter(prometheus.CounterOpts{
    40  			Name: "pyroscope_bucket_store_block_load_failures_total",
    41  			Help: "Total number of failed remote block loading attempts.",
    42  		})),
    43  
    44  		blockDrops: util.RegisterOrGet(reg, prometheus.NewCounter(prometheus.CounterOpts{
    45  			Name: "pyroscope_bucket_store_block_drops_total",
    46  			Help: "Total number of local blocks that were dropped.",
    47  		})),
    48  
    49  		blockDropFailures: util.RegisterOrGet(reg, prometheus.NewCounter(prometheus.CounterOpts{
    50  			Name: "pyroscope_bucket_store_block_drop_failures_total",
    51  			Help: "Total number of local blocks that failed to be dropped.",
    52  		})),
    53  	}
    54  }
    55  
    56  func (m *Metrics) Unregister() {
    57  	m.blockMetrics.Unregister()
    58  	for _, c := range []prometheus.Collector{
    59  		m.synced,
    60  		m.blockLoads,
    61  		m.blockLoadFailures,
    62  		m.blockDrops,
    63  		m.blockDropFailures,
    64  	} {
    65  		m.registerer.Unregister(c)
    66  	}
    67  }