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

     1  package compactionworker
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/prometheus/client_golang/prometheus"
     7  
     8  	"github.com/grafana/pyroscope/pkg/util"
     9  )
    10  
    11  type workerMetrics struct {
    12  	jobsInProgress   *prometheus.GaugeVec
    13  	jobsCompleted    *prometheus.CounterVec
    14  	jobDuration      *prometheus.HistogramVec
    15  	timeToCompaction *prometheus.HistogramVec
    16  	blocksDeleted    *prometheus.CounterVec
    17  }
    18  
    19  func newMetrics(r prometheus.Registerer) *workerMetrics {
    20  	m := &workerMetrics{
    21  		jobsInProgress: prometheus.NewGaugeVec(prometheus.GaugeOpts{
    22  			Name: "jobs_in_progress",
    23  			Help: "The number of active compaction jobs currently running.",
    24  		}, []string{"tenant", "level"}),
    25  
    26  		jobsCompleted: prometheus.NewCounterVec(prometheus.CounterOpts{
    27  			Name: "jobs_completed_total",
    28  			Help: "Total number of compaction jobs completed.",
    29  		}, []string{"tenant", "level", "status"}),
    30  
    31  		jobDuration: prometheus.NewHistogramVec(prometheus.HistogramOpts{
    32  			Name: "job_duration_seconds",
    33  			Help: "Duration of compaction job runs",
    34  
    35  			Buckets:                         prometheus.ExponentialBucketsRange(1, 300, 16),
    36  			NativeHistogramBucketFactor:     1.1,
    37  			NativeHistogramMaxBucketNumber:  50,
    38  			NativeHistogramMinResetDuration: time.Hour,
    39  		}, []string{"tenant", "level", "status"}),
    40  
    41  		timeToCompaction: prometheus.NewHistogramVec(prometheus.HistogramOpts{
    42  			Name: "time_to_compaction_seconds",
    43  			Help: "The time elapsed since the oldest compacted block was created.",
    44  
    45  			Buckets:                         prometheus.ExponentialBuckets(1, 3600, 16),
    46  			NativeHistogramBucketFactor:     1.1,
    47  			NativeHistogramMaxBucketNumber:  50,
    48  			NativeHistogramMinResetDuration: time.Hour,
    49  		}, []string{"tenant", "level"}),
    50  
    51  		blocksDeleted: prometheus.NewCounterVec(prometheus.CounterOpts{
    52  			Name: "blocks_deleted_total",
    53  			Help: "Total number of block deletion attempts.",
    54  		}, []string{"status"}),
    55  	}
    56  
    57  	util.Register(r,
    58  		m.jobsInProgress,
    59  		m.jobsCompleted,
    60  		m.jobDuration,
    61  		m.timeToCompaction,
    62  		m.blocksDeleted,
    63  	)
    64  
    65  	return m
    66  }