metrics: add metric to evaluate the policer performance #720
6 changed files with 44 additions and 0 deletions
|
@ -20,6 +20,7 @@ const (
|
|||
treeServiceSubsystem = "treeservice"
|
||||
writeCacheSubsystem = "writecache"
|
||||
grpcServerSubsystem = "grpc_server"
|
||||
policerSubsystem = "policer"
|
||||
|
||||
successLabel = "success"
|
||||
shardIDLabel = "shard_id"
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
29
pkg/metrics/policer.go
Normal file
29
pkg/metrics/policer.go
Normal 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()
|
||||
}
|
5
pkg/services/policer/metrics.go
Normal file
5
pkg/services/policer/metrics.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package policer
|
||||
|
||||
type MetricsRegister interface {
|
||||
IncProcessedObjects()
|
||||
}
|
|
@ -69,6 +69,8 @@ type cfg struct {
|
|||
batchSize, cacheSize uint32
|
||||
|
||||
rebalanceFreq, evictDuration, sleepDuration time.Duration
|
||||
|
||||
metrics MetricsRegister
|
||||
}
|
||||
|
||||
func defaultCfg() *cfg {
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue
Typo: policier -> policer
On peut le considérer comme un policier.
fixed