func (s *Service) SyncCommitteeSubscriptionCompleted(started time.Time, result string) {
	s.syncCommitteeSubscriptionProcessTimer.Observe(time.Since(started).Seconds())
	s.syncCommitteeSubscriptionProcessRequests.WithLabelValues(result).Inc()
}
SyncCommitteeSubscriptionCompleted is called when an sync committee subscription process has completed.
package prometheus
import (
	"time"
	"github.com/prometheus/client_golang/prometheus"
)
func (s *Service) setupSyncCommitteeSubscriptionMetrics() error {
	s.syncCommitteeSubscriptionProcessTimer =
		prometheus.NewHistogram(prometheus.HistogramOpts{
			Namespace: "vouch",
			Subsystem: "synccommitteesubscription_process",
			Name:      "duration_seconds",
			Help:      "The time vouch spends from starting the sync committee subscription process to submitting the subscription request.",
			Buckets: []float64{
				0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0,
				1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0,
			},
		})
	if err := prometheus.Register(s.syncCommitteeSubscriptionProcessTimer); err != nil {
		return err
	}
	s.syncCommitteeSubscriptionProcessRequests = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "vouch",
		Subsystem: "synccommitteesubscription_process",
		Name:      "requests_total",
		Help:      "The number of sync committee subscription processes.",
	}, []string{"result"})
	if err := prometheus.Register(s.syncCommitteeSubscriptionProcessRequests); err != nil {
		return err
	}
	s.syncCommitteeSubscribers = prometheus.NewGauge(prometheus.GaugeOpts{
		Namespace: "vouch",
		Subsystem: "synccommitteesubscription",
		Name:      "subscribers_total",
		Help:      "The number of sync committee subscribed.",
	})
	return prometheus.Register(s.syncCommitteeSubscribers)
}