forked from TrueCloudLab/frostfs-node
[#412] node: Replace metrics package
Use observability module. Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
74578052f9
commit
c09144ecf1
15 changed files with 162 additions and 459 deletions
|
@ -5,6 +5,7 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-observability/metrics"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
|
@ -37,18 +38,18 @@ type WriteCacheMetrics interface {
|
|||
}
|
||||
|
||||
type writeCacheMetrics struct {
|
||||
getDuration metric[*prometheus.HistogramVec]
|
||||
putDuration metric[*prometheus.HistogramVec]
|
||||
deleteDuration metric[*prometheus.HistogramVec]
|
||||
getDuration *prometheus.HistogramVec
|
||||
putDuration *prometheus.HistogramVec
|
||||
deleteDuration *prometheus.HistogramVec
|
||||
|
||||
flushCounter metric[*prometheus.CounterVec]
|
||||
evictCounter metric[*prometheus.CounterVec]
|
||||
flushCounter *prometheus.CounterVec
|
||||
evictCounter *prometheus.CounterVec
|
||||
|
||||
actualCount metric[*prometheus.GaugeVec]
|
||||
actualCount *prometheus.GaugeVec
|
||||
|
||||
estimatedSize metric[*prometheus.GaugeVec]
|
||||
estimatedSize *prometheus.GaugeVec
|
||||
|
||||
modeMetrics map[shardIDMode]metric[prometheus.GaugeFunc]
|
||||
modeMetrics map[shardIDMode]prometheus.GaugeFunc
|
||||
modeValues map[string]string
|
||||
modeMtx sync.RWMutex
|
||||
}
|
||||
|
@ -63,46 +64,46 @@ func newWriteCacheMetrics() *writeCacheMetrics {
|
|||
actualCount: newWCGaugeVec("actual_objects_count", "Actual objects count in writecache", []string{wcShardID, wcStorage}),
|
||||
estimatedSize: newWCGaugeVec("estimated_size_bytes", "Estimated writecache size", []string{wcShardID, wcStorage}),
|
||||
modeMtx: sync.RWMutex{},
|
||||
modeMetrics: make(map[shardIDMode]metric[prometheus.GaugeFunc]),
|
||||
modeMetrics: make(map[shardIDMode]prometheus.GaugeFunc),
|
||||
modeValues: make(map[string]string),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *writeCacheMetrics) AddGetDuration(shardID string, success bool, d time.Duration, storageType string) {
|
||||
setWriteCacheDuration(m.getDuration.value, shardID, success, d, storageType)
|
||||
setWriteCacheDuration(m.getDuration, shardID, success, d, storageType)
|
||||
}
|
||||
|
||||
func (m *writeCacheMetrics) AddDeleteDuration(shardID string, success bool, d time.Duration, storageType string) {
|
||||
setWriteCacheDuration(m.deleteDuration.value, shardID, success, d, storageType)
|
||||
setWriteCacheDuration(m.deleteDuration, shardID, success, d, storageType)
|
||||
}
|
||||
|
||||
func (m *writeCacheMetrics) AddPutDuration(shardID string, success bool, d time.Duration, storageType string) {
|
||||
setWriteCacheDuration(m.putDuration.value, shardID, success, d, storageType)
|
||||
setWriteCacheDuration(m.putDuration, shardID, success, d, storageType)
|
||||
}
|
||||
|
||||
func (m *writeCacheMetrics) IncActualCount(shardID string, storageType string) {
|
||||
m.actualCount.value.With(prometheus.Labels{
|
||||
m.actualCount.With(prometheus.Labels{
|
||||
wcShardID: shardID,
|
||||
wcStorage: storageType,
|
||||
}).Inc()
|
||||
}
|
||||
|
||||
func (m *writeCacheMetrics) DecActualCount(shardID string, storageType string) {
|
||||
m.actualCount.value.With(prometheus.Labels{
|
||||
m.actualCount.With(prometheus.Labels{
|
||||
wcShardID: shardID,
|
||||
wcStorage: storageType,
|
||||
}).Dec()
|
||||
}
|
||||
|
||||
func (m *writeCacheMetrics) SetActualCount(shardID string, count uint64, storageType string) {
|
||||
m.actualCount.value.With(prometheus.Labels{
|
||||
m.actualCount.With(prometheus.Labels{
|
||||
wcShardID: shardID,
|
||||
wcStorage: storageType,
|
||||
}).Set(float64(count))
|
||||
}
|
||||
|
||||
func (m *writeCacheMetrics) SetEstimateSize(shardID string, size uint64, storageType string) {
|
||||
m.estimatedSize.value.With(prometheus.Labels{
|
||||
m.estimatedSize.With(prometheus.Labels{
|
||||
wcShardID: shardID,
|
||||
wcStorage: storageType,
|
||||
}).Set(float64(size))
|
||||
|
@ -121,7 +122,7 @@ func (m *writeCacheMetrics) SetMode(shardID string, mode string) {
|
|||
return
|
||||
}
|
||||
|
||||
metric := newGaugeFunc(
|
||||
metric := metrics.NewGaugeFunc(
|
||||
prometheus.GaugeOpts{
|
||||
Namespace: namespace,
|
||||
Subsystem: wcSubsystem,
|
||||
|
@ -141,12 +142,11 @@ func (m *writeCacheMetrics) SetMode(shardID string, mode string) {
|
|||
}
|
||||
return 0
|
||||
})
|
||||
mustRegister(metric)
|
||||
m.modeMetrics[key] = metric
|
||||
}
|
||||
|
||||
func (m *writeCacheMetrics) IncFlushCounter(shardID string, success bool, storageType string) {
|
||||
m.flushCounter.value.With(prometheus.Labels{
|
||||
m.flushCounter.With(prometheus.Labels{
|
||||
wcShardID: shardID,
|
||||
wcSuccess: fmt.Sprintf("%v", success),
|
||||
wcStorage: storageType,
|
||||
|
@ -154,22 +154,12 @@ func (m *writeCacheMetrics) IncFlushCounter(shardID string, success bool, storag
|
|||
}
|
||||
|
||||
func (m *writeCacheMetrics) IncEvictCounter(shardID string, storageType string) {
|
||||
m.evictCounter.value.With(prometheus.Labels{
|
||||
m.evictCounter.With(prometheus.Labels{
|
||||
wcShardID: shardID,
|
||||
wcStorage: storageType,
|
||||
}).Inc()
|
||||
}
|
||||
|
||||
func (m *writeCacheMetrics) register() {
|
||||
mustRegister(m.getDuration)
|
||||
mustRegister(m.putDuration)
|
||||
mustRegister(m.deleteDuration)
|
||||
mustRegister(m.actualCount)
|
||||
mustRegister(m.estimatedSize)
|
||||
mustRegister(m.flushCounter)
|
||||
mustRegister(m.evictCounter)
|
||||
}
|
||||
|
||||
func setWriteCacheDuration(m *prometheus.HistogramVec, shardID string, success bool, d time.Duration, storageType string) {
|
||||
m.With(
|
||||
prometheus.Labels{
|
||||
|
@ -180,17 +170,17 @@ func setWriteCacheDuration(m *prometheus.HistogramVec, shardID string, success b
|
|||
).Observe(float64(d))
|
||||
}
|
||||
|
||||
func newWCMethodDurationCounter(method string) metric[*prometheus.HistogramVec] {
|
||||
return newHistogramVec(prometheus.HistogramOpts{
|
||||
func newWCMethodDurationCounter(method string) *prometheus.HistogramVec {
|
||||
return metrics.NewHistogramVec(prometheus.HistogramOpts{
|
||||
Namespace: namespace,
|
||||
Subsystem: wcSubsystem,
|
||||
Name: fmt.Sprintf("%s_req_duration_seconds", method),
|
||||
Help: fmt.Sprintf("Accumulated %s request process duration", method),
|
||||
}, []string{wcShardID, wcSuccess, wcStorage})
|
||||
}, []string{wcShardID, wcSuccess})
|
||||
}
|
||||
|
||||
func newWCOperationCounterVec(operation string, labels []string) metric[*prometheus.CounterVec] {
|
||||
return newCounterVec(prometheus.CounterOpts{
|
||||
func newWCOperationCounterVec(operation string, labels []string) *prometheus.CounterVec {
|
||||
return metrics.NewCounterVec(prometheus.CounterOpts{
|
||||
Namespace: namespace,
|
||||
Subsystem: wcSubsystem,
|
||||
Name: fmt.Sprintf("%s_operation_count", operation),
|
||||
|
@ -198,8 +188,8 @@ func newWCOperationCounterVec(operation string, labels []string) metric[*prometh
|
|||
}, labels)
|
||||
}
|
||||
|
||||
func newWCGaugeVec(name, help string, labels []string) metric[*prometheus.GaugeVec] {
|
||||
return newGaugeVec(prometheus.GaugeOpts{
|
||||
func newWCGaugeVec(name, help string, labels []string) *prometheus.GaugeVec {
|
||||
return metrics.NewGaugeVec(prometheus.GaugeOpts{
|
||||
Namespace: namespace,
|
||||
Subsystem: wcSubsystem,
|
||||
Name: name,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue