[#701] metrics: add metric to evaluate policer performance

Add processed objects counter in policerMetrics,
add policer field to NodeMetrics

Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
pull/735/head
Ekaterina Lebedeva 2023-10-04 19:20:59 +03:00 committed by Evgenii Stratonikov
parent 4caa934eea
commit 5e229dc248
6 changed files with 44 additions and 0 deletions

View File

@ -20,6 +20,7 @@ const (
treeServiceSubsystem = "treeservice"
writeCacheSubsystem = "writecache"
grpcServerSubsystem = "grpc_server"
policerSubsystem = "policer"
successLabel = "success"
shardIDLabel = "shard_id"

View File

@ -18,6 +18,7 @@ type NodeMetrics struct {
metabase *metabaseMetrics
pilorama *piloramaMetrics
grpc *grpcServerMetrics
policer *policerMetrics
}
func NewNodeMetrics() *NodeMetrics {
@ -39,6 +40,7 @@ func NewNodeMetrics() *NodeMetrics {
metabase: newMetabaseMetrics(),
pilorama: newPiloramaMetrics(),
grpc: newGrpcServerMetrics(),
policer: newPolicerMetrics(),
}
}
@ -90,3 +92,7 @@ func (m *NodeMetrics) PiloramaMetrics() PiloramaMetrics {
func (m *NodeMetrics) GrpcServerMetrics() GrpcServerMetrics {
return m.grpc
}
func (m *NodeMetrics) PolicerMetrics() PolicerMetrics {
return m.policer
}

View File

@ -0,0 +1,29 @@
package metrics
import (
"git.frostfs.info/TrueCloudLab/frostfs-observability/metrics"
"github.com/prometheus/client_golang/prometheus"
)
type PolicerMetrics interface {
IncProcessedObjects()
}
type policerMetrics struct {
processedObjectsCounter prometheus.Counter
}
func newPolicerMetrics() *policerMetrics {
return &policerMetrics{
processedObjectsCounter: metrics.NewCounter(prometheus.CounterOpts{
Namespace: namespace,
Subsystem: policerSubsystem,
Name: "processed_objects_total",
Help: "Total number of objects processed by policer",
}),
}
}
func (m *policerMetrics) IncProcessedObjects() {
m.processedObjectsCounter.Inc()
}

View File

@ -0,0 +1,5 @@
package policer
type MetricsRegister interface {
IncProcessedObjects()
}

View File

@ -69,6 +69,8 @@ type cfg struct {
batchSize, cacheSize uint32
rebalanceFreq, evictDuration, sleepDuration time.Duration
metrics MetricsRegister
}
func defaultCfg() *cfg {

View File

@ -60,6 +60,7 @@ func (p *Policer) shardPolicyWorker(ctx context.Context) {
}
p.cache.Add(addr.Address, time.Now())
p.objsInWork.remove(addr.Address)
p.metrics.IncProcessedObjects()
}
})
if err != nil {