[#1054] neofs-node: add epoch metric

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
Evgenii Stratonikov 2021-12-28 13:39:42 +03:00 committed by Alex Vanin
parent e1137aa09f
commit e96eb3e00b
3 changed files with 24 additions and 0 deletions

View file

@ -316,6 +316,7 @@ func initCfg(path string) *cfg {
if metricsconfig.Address(c.appCfg) != "" {
c.metricsCollector = metrics.NewStorageMetrics()
netState.metrics = c.metricsCollector
}
c.onShutdown(c.clientCache.CloseAll) // clean up connections

View file

@ -10,6 +10,7 @@ import (
"github.com/nspcc-dev/neofs-api-go/v2/refs"
nodeconfig "github.com/nspcc-dev/neofs-node/cmd/neofs-node/config/node"
"github.com/nspcc-dev/neofs-node/pkg/core/netmap"
"github.com/nspcc-dev/neofs-node/pkg/metrics"
"github.com/nspcc-dev/neofs-node/pkg/morph/client/netmap/wrapper"
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
netmapEvent "github.com/nspcc-dev/neofs-node/pkg/morph/event/netmap"
@ -30,6 +31,8 @@ type networkState struct {
controlNetStatus atomic.Value // control.NetmapStatus
nodeInfo atomic.Value // *netmapSDK.NodeInfo
metrics *metrics.StorageMetrics
}
func newNetworkState() *networkState {
@ -44,6 +47,9 @@ func (s *networkState) CurrentEpoch() uint64 {
func (s *networkState) setCurrentEpoch(v uint64) {
s.epoch.Store(v)
if s.metrics != nil {
s.metrics.SetEpoch(v)
}
}
func (s *networkState) setNodeInfo(ni *netmapSDK.NodeInfo) {

View file

@ -1,10 +1,13 @@
package metrics
import "github.com/prometheus/client_golang/prometheus"
const namespace = "neofs_node"
type StorageMetrics struct {
objectServiceMetrics
engineMetrics
epoch prometheus.Gauge
}
func NewStorageMetrics() *StorageMetrics {
@ -14,8 +17,22 @@ func NewStorageMetrics() *StorageMetrics {
engine := newEngineMetrics()
engine.register()
epoch := prometheus.NewGauge(prometheus.GaugeOpts{
Namespace: namespace,
Subsystem: innerRingSubsystem,
Name: "epoch",
Help: "Current epoch as seen by inner-ring node.",
})
prometheus.MustRegister(epoch)
return &StorageMetrics{
objectServiceMetrics: objectService,
engineMetrics: engine,
epoch: epoch,
}
}
// SetEpoch updates epoch metric.
func (m *StorageMetrics) SetEpoch(epoch uint64) {
m.epoch.Set(float64(epoch))
}