github.com/grafana/pyroscope@v1.18.0/pkg/segmentwriter/client/distributor/placement/adaptiveplacement/placement_manager_metrics.go (about)

     1  package adaptiveplacement
     2  
     3  import (
     4  	"github.com/prometheus/client_golang/prometheus"
     5  )
     6  
     7  type managerMetrics struct {
     8  	rulesTotal prometheus.Gauge
     9  	statsTotal prometheus.Gauge
    10  	lastUpdate prometheus.Gauge
    11  
    12  	datasetShardLimit          *prometheus.GaugeVec
    13  	datasetShardUsage          *prometheus.GaugeVec
    14  	datasetShardUsageBreakdown *prometheus.GaugeVec
    15  }
    16  
    17  func newManagerMetrics(reg prometheus.Registerer) *managerMetrics {
    18  	m := &managerMetrics{
    19  		lastUpdate: prometheus.NewGauge(prometheus.GaugeOpts{
    20  			Name: "pyroscope_adaptive_placement_rules_last_update_time",
    21  			Help: "Second timestamp of the last successful update.",
    22  		}),
    23  		rulesTotal: prometheus.NewGauge(prometheus.GaugeOpts{
    24  			Name: "pyroscope_adaptive_placement_rules",
    25  			Help: "Total number of rule entries.",
    26  		}),
    27  		statsTotal: prometheus.NewGauge(prometheus.GaugeOpts{
    28  			Name: "pyroscope_adaptive_placement_stats",
    29  			Help: "Total number of stats entries.",
    30  		}),
    31  
    32  		datasetShardLimit: prometheus.NewGaugeVec(prometheus.GaugeOpts{
    33  			Name: "pyroscope_adaptive_placement_dataset_shard_limit",
    34  			Help: "Maximum number of shards allowed for a dataset.",
    35  		}, []string{"tenant", "dataset", "load_balancing"}),
    36  
    37  		datasetShardUsage: prometheus.NewGaugeVec(prometheus.GaugeOpts{
    38  			Name: "pyroscope_adaptive_placement_dataset_shard_usage_bytes_per_second",
    39  			Help: "Usage of the dataset in bytes per second.",
    40  		}, []string{"tenant", "dataset"}),
    41  
    42  		datasetShardUsageBreakdown: prometheus.NewGaugeVec(prometheus.GaugeOpts{
    43  			Name: "pyroscope_adaptive_placement_dataset_shard_usage_per_shard_bytes_per_second",
    44  			Help: "Usage of the dataset shard in bytes per second.",
    45  		}, []string{"tenant", "dataset", "shard_id", "shard_owner"}),
    46  	}
    47  	if reg != nil {
    48  		reg.MustRegister(
    49  			m.lastUpdate,
    50  			m.rulesTotal,
    51  			m.statsTotal,
    52  			m.datasetShardLimit,
    53  			m.datasetShardUsage,
    54  			m.datasetShardUsageBreakdown,
    55  		)
    56  	}
    57  	return m
    58  }