summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAnton Tolchanov <anton@tailscale.com>2025-10-10 11:22:33 +0200
committerAnton Tolchanov <1687799+knyar@users.noreply.github.com>2025-10-10 11:58:36 +0200
commit072e6a39f49faa4d209fcbb328fe2fb8d38f9e7f (patch)
tree1de32ac06eae3fd6e4fa075f613198d6b5e5ec47
parent154d36f73d305e147b2410263a2899fb54646909 (diff)
downloadtailscale-072e6a39f49faa4d209fcbb328fe2fb8d38f9e7f.tar.xz
tailscale-072e6a39f49faa4d209fcbb328fe2fb8d38f9e7f.zip
tsweb/varz: add support for ShardedInt metrics
Fixes tailscale/corp#33236 Signed-off-by: Anton Tolchanov <anton@tailscale.com>
-rw-r--r--cmd/stund/depaware.txt2
-rw-r--r--tsweb/varz/varz.go4
-rw-r--r--tsweb/varz/varz_test.go15
3 files changed, 20 insertions, 1 deletions
diff --git a/cmd/stund/depaware.txt b/cmd/stund/depaware.txt
index 8cd2e49be..be3e0e0cf 100644
--- a/cmd/stund/depaware.txt
+++ b/cmd/stund/depaware.txt
@@ -58,7 +58,7 @@ tailscale.com/cmd/stund dependencies: (generated by github.com/tailscale/depawar
tailscale.com/net/stun from tailscale.com/net/stunserver
tailscale.com/net/stunserver from tailscale.com/cmd/stund
tailscale.com/net/tsaddr from tailscale.com/tsweb
- tailscale.com/syncs from tailscale.com/metrics
+ tailscale.com/syncs from tailscale.com/metrics+
tailscale.com/tailcfg from tailscale.com/version
tailscale.com/tsweb from tailscale.com/cmd/stund+
tailscale.com/tsweb/promvarz from tailscale.com/cmd/stund
diff --git a/tsweb/varz/varz.go b/tsweb/varz/varz.go
index aca2878b7..b1c66b859 100644
--- a/tsweb/varz/varz.go
+++ b/tsweb/varz/varz.go
@@ -25,6 +25,7 @@ import (
"golang.org/x/exp/constraints"
"tailscale.com/metrics"
+ "tailscale.com/syncs"
"tailscale.com/types/logger"
"tailscale.com/version"
)
@@ -136,6 +137,9 @@ func writePromExpVar(w io.Writer, prefix string, kv expvar.KeyValue) {
case *expvar.Int:
fmt.Fprintf(w, "# TYPE %s %s\n%s %v\n", name, cmp.Or(typ, "counter"), name, v.Value())
return
+ case *syncs.ShardedInt:
+ fmt.Fprintf(w, "# TYPE %s %s\n%s %v\n", name, cmp.Or(typ, "counter"), name, v.Value())
+ return
case *expvar.Float:
fmt.Fprintf(w, "# TYPE %s %s\n%s %v\n", name, cmp.Or(typ, "gauge"), name, v.Value())
return
diff --git a/tsweb/varz/varz_test.go b/tsweb/varz/varz_test.go
index f7a9d8801..5bbacbe35 100644
--- a/tsweb/varz/varz_test.go
+++ b/tsweb/varz/varz_test.go
@@ -13,6 +13,7 @@ import (
"testing"
"tailscale.com/metrics"
+ "tailscale.com/syncs"
"tailscale.com/tstest"
"tailscale.com/util/racebuild"
"tailscale.com/version"
@@ -283,6 +284,20 @@ foo_foo_a 1
foo_foo_b 1
`) + "\n",
},
+ {
+ "metrics_sharded_int",
+ "counter_api_status_code",
+ func() *syncs.ShardedInt {
+ m := syncs.NewShardedInt()
+ m.Add(40)
+ m.Add(2)
+ return m
+ }(),
+ strings.TrimSpace(`
+# TYPE api_status_code counter
+api_status_code 42
+ `) + "\n",
+ },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {