[#424] morph: Fix cache metrics
All checks were successful
ci/woodpecker/pr/pre-commit Pipeline was successful

Use separate morph cache metrics for node and IR

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
Dmitrii Stepanov 2023-06-14 12:12:47 +03:00
parent 4449006862
commit 26b305f82b
5 changed files with 17 additions and 8 deletions

View file

@ -30,8 +30,6 @@ const (
)
func initMorphComponents(ctx context.Context, c *cfg) {
var err error
addresses := morphconfig.RPCEndpoint(c.appCfg)
// Morph client stable-sorts endpoints by priority. Shuffle here to randomize
@ -50,6 +48,7 @@ func initMorphComponents(ctx context.Context, c *cfg) {
c.internalErr <- errors.New("morph connection has been lost")
}),
client.WithSwitchInterval(morphconfig.SwitchInterval(c.appCfg)),
client.WithMorphCacheMetrics(metrics.NewNodeMorphCacheMetrics()),
)
if err != nil {
c.log.Info(logs.FrostFSNodeFailedToCreateNeoRPCClient,

View file

@ -12,6 +12,7 @@ const (
innerRingSubsystem = "ir"
innerRingLabelSuccess = "success"
innerRingLabelType = "type"
innerRingNamespace = "frostfs_ir"
)
// InnerRingServiceMetrics contains metrics collected by inner ring.
@ -26,19 +27,19 @@ type InnerRingServiceMetrics struct {
func NewInnerRingMetrics() *InnerRingServiceMetrics {
var (
epoch = metrics.NewGauge(prometheus.GaugeOpts{
Namespace: namespace,
Namespace: innerRingNamespace,
Subsystem: innerRingSubsystem,
Name: "epoch",
Help: "Current epoch as seen by inner-ring node.",
})
health = metrics.NewGauge(prometheus.GaugeOpts{
Namespace: namespace,
Namespace: innerRingNamespace,
Subsystem: innerRingSubsystem,
Name: "health",
Help: "Current inner-ring node state.",
})
eventDuration = metrics.NewHistogramVec(prometheus.HistogramOpts{
Namespace: namespace,
Namespace: innerRingNamespace,
Subsystem: innerRingSubsystem,
Name: "event_duration_seconds",
Help: "Duration of processing of inner-ring events",
@ -49,7 +50,7 @@ func NewInnerRingMetrics() *InnerRingServiceMetrics {
epoch: epoch,
health: health,
eventDuration: eventDuration,
morphCacheMetrics: newMorphCacheMetrics(),
morphCacheMetrics: newMorphCacheMetrics(innerRingNamespace),
}
}

View file

@ -24,10 +24,14 @@ type morphCacheMetrics struct {
var _ MorphCacheMetrics = (*morphCacheMetrics)(nil)
func newMorphCacheMetrics() *morphCacheMetrics {
func NewNodeMorphCacheMetrics() MorphCacheMetrics {
return newMorphCacheMetrics(namespace)
}
func newMorphCacheMetrics(ns string) *morphCacheMetrics {
return &morphCacheMetrics{
methodDuration: metrics.NewHistogramVec(prometheus.HistogramOpts{
Namespace: namespace,
Namespace: ns,
Subsystem: mcSubsystem,
Name: "request_duration_seconds",
Help: "Morph cache request process duration",

View file

@ -68,6 +68,7 @@ func defaultConfig() *cfg {
signer: &transaction.Signer{
Scopes: transaction.Global,
},
morphCacheMetrics: &morphmetrics.NoopMorphCacheMetrics{},
}
}

View file

@ -15,3 +15,7 @@ func (NoopRegister) IncSwitchCount() {
func (NoopRegister) SetLastBlock(uint32) {}
func (NoopRegister) IncNotificationCount(string) {}
func (NoopRegister) ObserveInvoke(string, string, string, bool, time.Duration) {}
type NoopMorphCacheMetrics struct{}
func (m *NoopMorphCacheMetrics) AddMethodDuration(string, bool, time.Duration) {}