diff options
| author | Anton Tolchanov <anton@tailscale.com> | 2025-10-10 11:22:33 +0200 |
|---|---|---|
| committer | Anton Tolchanov <1687799+knyar@users.noreply.github.com> | 2025-10-10 11:58:36 +0200 |
| commit | 072e6a39f49faa4d209fcbb328fe2fb8d38f9e7f (patch) | |
| tree | 1de32ac06eae3fd6e4fa075f613198d6b5e5ec47 | |
| parent | 154d36f73d305e147b2410263a2899fb54646909 (diff) | |
| download | tailscale-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.txt | 2 | ||||
| -rw-r--r-- | tsweb/varz/varz.go | 4 | ||||
| -rw-r--r-- | tsweb/varz/varz_test.go | 15 |
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) { |
