diff --git a/p2p/host/autorelay/metrics.go b/p2p/host/autorelay/metrics.go index 06b395af35..a83b2df4b5 100644 --- a/p2p/host/autorelay/metrics.go +++ b/p2p/host/autorelay/metrics.go @@ -77,6 +77,14 @@ var ( []string{"work_type"}, ) + desiredReservations = prometheus.NewGauge( + prometheus.GaugeOpts{ + Namespace: metricNamespace, + Name: "desired_reservations", + Help: "Desired Reservations", + }, + ) + collectors = []prometheus.Collector{ status, reservationsOpenedTotal, @@ -87,6 +95,7 @@ var ( candidatesCircuitV2SupportTotal, candidatesTotal, scheduledWorkTime, + desiredReservations, } ) @@ -105,6 +114,8 @@ type MetricsTracer interface { CandidateRemoved() ScheduledWorkUpdated(scheduledWork *scheduledWorkTimes) + + DesiredReservations(int) } type metricsTracer struct{} @@ -230,6 +241,10 @@ func (mt *metricsTracer) ScheduledWorkUpdated(scheduledWork *scheduledWorkTimes) scheduledWorkTime.WithLabelValues(*tags...).Set(float64(scheduledWork.nextOldCandidateCheck.Unix())) } +func (mt *metricsTracer) DesiredReservations(cnt int) { + desiredReservations.Set(float64(cnt)) +} + // wrappedMetricsTracer wraps MetricsTracer and ignores all calls when mt is nil type wrappedMetricsTracer struct { mt MetricsTracer @@ -238,10 +253,8 @@ type wrappedMetricsTracer struct { var _ MetricsTracer = &wrappedMetricsTracer{} func (mt *wrappedMetricsTracer) RelayFinderStatus(isActive bool) { - if isActive { - status.Set(1) - } else { - status.Set(2) + if mt.mt != nil { + mt.mt.RelayFinderStatus(isActive) } } @@ -292,3 +305,9 @@ func (mt *wrappedMetricsTracer) ScheduledWorkUpdated(scheduledWork *scheduledWor mt.mt.ScheduledWorkUpdated(scheduledWork) } } + +func (mt *wrappedMetricsTracer) DesiredReservations(cnt int) { + if mt.mt != nil { + mt.mt.DesiredReservations(cnt) + } +} diff --git a/p2p/host/autorelay/relay_finder.go b/p2p/host/autorelay/relay_finder.go index d5e407cb77..d839ac70f0 100644 --- a/p2p/host/autorelay/relay_finder.go +++ b/p2p/host/autorelay/relay_finder.go @@ -131,6 +131,8 @@ func (rf *relayFinder) background(ctx context.Context) { } defer subConnectedness.Close() + rf.metricsTracer.DesiredReservations(rf.conf.desiredRelays) + bootDelayTimer := rf.conf.clock.Timer(rf.conf.bootDelay) defer bootDelayTimer.Stop() @@ -609,7 +611,7 @@ func (rf *relayFinder) refreshReservations(ctx context.Context, now time.Time) b p := p g.Go(func() error { err := rf.refreshRelayReservation(ctx, p) - rf.metricsTracer.ReservationRequestFinished(true, err != nil) + rf.metricsTracer.ReservationRequestFinished(true, err == nil) return err })