Skip to content

Commit

Permalink
Add providerChosenByOptimizerCount gauge
Browse files Browse the repository at this point in the history
  • Loading branch information
shleikes committed Sep 5, 2024
1 parent 2268419 commit b3d8e1d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
3 changes: 3 additions & 0 deletions protocol/lavasession/consumer_session_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,9 @@ func (csm *ConsumerSessionManager) getValidProviderAddresses(ignoredProvidersLis
providers = csm.getTopTenProvidersForStatefulCalls(validAddresses, ignoredProvidersList)
} else {
providers = csm.providerOptimizer.ChooseProvider(validAddresses, ignoredProvidersList, cu, requestedBlock, OptimizerPerturbation)
for _, chosenProvider := range providers {
go csm.consumerMetricsManager.UpdateProviderChosenByOptimizerCount(csm.rpcEndpoint.ChainID, csm.rpcEndpoint.ApiInterface, chosenProvider, csm.currentEpoch)
}
}

utils.LavaFormatTrace("Choosing providers",
Expand Down
16 changes: 16 additions & 0 deletions protocol/metrics/consumer_metrics_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ type ConsumerMetricsManager struct {
relayProcessingLatencyBeforeProvider *prometheus.GaugeVec
relayProcessingLatencyAfterProvider *prometheus.GaugeVec
averageProcessingLatency map[string]*LatencyTracker
providerChosenByOptimizerCount *prometheus.GaugeVec
}

type ConsumerMetricsManagerOptions struct {
Expand Down Expand Up @@ -175,6 +176,11 @@ func NewConsumerMetricsManager(options ConsumerMetricsManagerOptions) *ConsumerM
Help: "average latency of processing a successful relay after it is received from the provider in µs (10^6)",
}, []string{"spec", "apiInterface"})

providerChosenByOptimizerCount := prometheus.NewGaugeVec(prometheus.GaugeOpts{
Name: "lava_consumer_provider_chosen_by_optimizer_count",
Help: "The total number of times a provider was chosen by the optimizer",
}, []string{"spec", "apiInterface", "provider_address", "epoch"})

// Register the metrics with the Prometheus registry.
prometheus.MustRegister(totalCURequestedMetric)
prometheus.MustRegister(totalRelaysRequestedMetric)
Expand All @@ -197,6 +203,7 @@ func NewConsumerMetricsManager(options ConsumerMetricsManagerOptions) *ConsumerM
prometheus.MustRegister(totalNodeErroredRecoveryAttemptsMetric)
prometheus.MustRegister(relayProcessingLatencyBeforeProvider)
prometheus.MustRegister(relayProcessingLatencyAfterProvider)
prometheus.MustRegister(providerChosenByOptimizerCount)

consumerMetricsManager := &ConsumerMetricsManager{
totalCURequestedMetric: totalCURequestedMetric,
Expand Down Expand Up @@ -225,6 +232,7 @@ func NewConsumerMetricsManager(options ConsumerMetricsManagerOptions) *ConsumerM
relayProcessingLatencyBeforeProvider: relayProcessingLatencyBeforeProvider,
relayProcessingLatencyAfterProvider: relayProcessingLatencyAfterProvider,
averageProcessingLatency: map[string]*LatencyTracker{},
providerChosenByOptimizerCount: providerChosenByOptimizerCount,
}

http.Handle("/metrics", promhttp.Handler())
Expand Down Expand Up @@ -442,6 +450,7 @@ func (pme *ConsumerMetricsManager) ResetSessionRelatedMetrics() {
pme.qosMetric.Reset()
pme.qosExcellenceMetric.Reset()
pme.providerRelays = map[string]uint64{}
pme.providerChosenByOptimizerCount.Reset()
}

func (pme *ConsumerMetricsManager) SetVersion(version string) {
Expand All @@ -451,6 +460,13 @@ func (pme *ConsumerMetricsManager) SetVersion(version string) {
SetVersionInner(pme.protocolVersionMetric, version)
}

func (pme *ConsumerMetricsManager) UpdateProviderChosenByOptimizerCount(chainId string, apiInterface string, providerAddress string, epoch uint64) {
if pme == nil {
return
}
pme.providerChosenByOptimizerCount.WithLabelValues(chainId, apiInterface, providerAddress, strconv.FormatUint(epoch, 10)).Inc()
}

func SetVersionInner(protocolVersionMetric *prometheus.GaugeVec, version string) {
var major, minor, patch int
_, err := fmt.Sscanf(version, "%d.%d.%d", &major, &minor, &patch)
Expand Down

0 comments on commit b3d8e1d

Please sign in to comment.