[tor-commits] [snowflake/master] Add new gauge to show currently available proxies

cohosh at torproject.org cohosh at torproject.org
Mon Apr 26 18:23:28 UTC 2021


commit 2a310682b51b3da514d7e1927aafcdae9b9c8820
Author: Cecylia Bocovich <cohosh at torproject.org>
Date:   Wed Mar 31 17:22:31 2021 -0400

    Add new gauge to show currently available proxies
---
 broker/broker.go  |  3 +++
 broker/metrics.go | 16 +++++++++++++---
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/broker/broker.go b/broker/broker.go
index b29ebd4..77c62d8 100644
--- a/broker/broker.go
+++ b/broker/broker.go
@@ -151,6 +151,7 @@ func (ctx *BrokerContext) Broker() {
 					} else {
 						heap.Remove(ctx.restrictedSnowflakes, snowflake.index)
 					}
+					promMetrics.AvailableProxies.With(prometheus.Labels{"nat": request.natType, "type": request.proxyType}).Dec()
 					delete(ctx.idToSnowflake, snowflake.id)
 					close(request.offerChannel)
 				}
@@ -176,6 +177,7 @@ func (ctx *BrokerContext) AddSnowflake(id string, proxyType string, natType stri
 	} else {
 		heap.Push(ctx.restrictedSnowflakes, snowflake)
 	}
+	promMetrics.AvailableProxies.With(prometheus.Labels{"nat": natType, "type": proxyType}).Inc()
 	ctx.snowflakeLock.Unlock()
 	ctx.idToSnowflake[id] = snowflake
 	return snowflake
@@ -319,6 +321,7 @@ func clientOffers(ctx *BrokerContext, w http.ResponseWriter, r *http.Request) {
 	}
 
 	ctx.snowflakeLock.Lock()
+	promMetrics.AvailableProxies.With(prometheus.Labels{"nat": snowflake.natType, "type": snowflake.proxyType}).Dec()
 	delete(ctx.idToSnowflake, snowflake.id)
 	ctx.snowflakeLock.Unlock()
 }
diff --git a/broker/metrics.go b/broker/metrics.go
index 24ff9b0..be8cfd9 100644
--- a/broker/metrics.go
+++ b/broker/metrics.go
@@ -261,9 +261,10 @@ func binCount(count uint) uint {
 }
 
 type PromMetrics struct {
-	ProxyTotal      *prometheus.CounterVec
-	ProxyPollTotal  *RoundedCounterVec
-	ClientPollTotal *RoundedCounterVec
+	ProxyTotal       *prometheus.CounterVec
+	ProxyPollTotal   *RoundedCounterVec
+	ClientPollTotal  *RoundedCounterVec
+	AvailableProxies *prometheus.GaugeVec
 }
 
 //Initialize metrics for prometheus exporter
@@ -280,6 +281,15 @@ func initPrometheus() *PromMetrics {
 		[]string{"type", "nat", "cc"},
 	)
 
+	promMetrics.AvailableProxies = promauto.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Namespace: prometheusNamespace,
+			Name:      "available_proxies",
+			Help:      "The number of currently available snowflake proxies",
+		},
+		[]string{"type", "nat"},
+	)
+
 	promMetrics.ProxyPollTotal = NewRoundedCounterVec(
 		prometheus.CounterOpts{
 			Namespace: prometheusNamespace,





More information about the tor-commits mailing list