diff --git a/nodebuilder/node/uptime.go b/nodebuilder/node/uptime.go index 97c3f16f31..e7493cd86c 100644 --- a/nodebuilder/node/uptime.go +++ b/nodebuilder/node/uptime.go @@ -28,8 +28,12 @@ type UptimeMetrics struct { // totalNodeUptime is the total time the node has been running. totalNodeUptime asyncfloat64.Counter + // totalNodeUpTimeTicks is the total time the node has been running + // counted in units of 1 second. + totalNodeUpTimeTicks int + // store is the datastore used to store the node uptime metrics. - store datastore.Datastore + store datastore.Batching } var ( @@ -40,7 +44,7 @@ var ( // NewUptimeMetrics creates a new UptimeMetrics // and registers a callback to re-meter the totalNodeUptime metric. -func NewUptimeMetrics(ds datastore.Datastore) (*UptimeMetrics, error) { +func NewUptimeMetrics(ds datastore.Batching) (*UptimeMetrics, error) { nodeStartTS, err := meter. AsyncFloat64(). Gauge( @@ -62,9 +66,10 @@ func NewUptimeMetrics(ds datastore.Datastore) (*UptimeMetrics, error) { } m := &UptimeMetrics{ - nodeStartTS: nodeStartTS, - totalNodeUptime: totalNodeUptime, - store: namespace.Wrap(ds, storePrefix), + nodeStartTS: nodeStartTS, + totalNodeUptime: totalNodeUptime, + store: namespace.Wrap(ds, storePrefix), + totalNodeUpTimeTicks: 1, } err = meter.RegisterCallback( @@ -72,7 +77,8 @@ func NewUptimeMetrics(ds datastore.Datastore) (*UptimeMetrics, error) { totalNodeUptime, }, func(ctx context.Context) { - totalNodeUptime.Observe(ctx, 1) + m.totalNodeUpTimeTicks++ + totalNodeUptime.Observe(ctx, float64(m.totalNodeUpTimeTicks)) }, ) if err != nil { diff --git a/nodebuilder/settings.go b/nodebuilder/settings.go index 558df10068..2fe589f7cf 100644 --- a/nodebuilder/settings.go +++ b/nodebuilder/settings.go @@ -44,7 +44,7 @@ func WithMetrics(metricOpts []otlpmetrichttp.Option, nodeType node.Type) fx.Opti fx.Invoke(header.WithMetrics), fx.Invoke(state.WithMetrics), fx.Invoke(fraud.WithMetrics), - fx.Invoke(func(ctx context.Context, ds datastore.Datastore) error { + fx.Invoke(func(ctx context.Context, ds datastore.Batching) error { m, err := node.NewUptimeMetrics(ds) if err != nil { return err