summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJoe Tsai <joetsai@digital-static.net>2025-12-11 11:25:00 -0800
committerJoe Tsai <joetsai@digital-static.net>2025-12-11 18:04:50 -0800
commit887bfc3bc53f24fdafbc91c8935926e8df01e003 (patch)
tree9494b5e35d1aadeea3893af27b3a228454912a71
parent9613b4eecca191e156c8195edb56dff4121c4bf9 (diff)
downloadtailscale-dsnet/logpolicy-metrics.tar.xz
tailscale-dsnet/logpolicy-metrics.zip
logpolicy: expose certain metrics as clientmetricsdsnet/logpolicy-metrics
This allows us to detect how often we are actually filching (and therefore whether to maintain this feature). It also reports the storage size and amount of dropped bytes. Updates tailscale/corp#21363 Signed-off-by: Joe Tsai <joetsai@digital-static.net>
-rw-r--r--logpolicy/logpolicy.go3
-rw-r--r--logpolicy/logtail_metrics.go29
-rw-r--r--logpolicy/logtail_nometrics.go10
3 files changed, 42 insertions, 0 deletions
diff --git a/logpolicy/logpolicy.go b/logpolicy/logpolicy.go
index f7491783a..741e02fc7 100644
--- a/logpolicy/logpolicy.go
+++ b/logpolicy/logpolicy.go
@@ -662,6 +662,9 @@ func (opts Options) init(disableLogging bool) (*logtail.Config, *Policy) {
}
}
lw := logtail.NewLogger(conf, opts.Logf)
+ if conf.MetricsDelta != nil {
+ exportClientMetrics(lw)
+ }
var logOutput io.Writer = lw
diff --git a/logpolicy/logtail_metrics.go b/logpolicy/logtail_metrics.go
new file mode 100644
index 000000000..87fa7de89
--- /dev/null
+++ b/logpolicy/logtail_metrics.go
@@ -0,0 +1,29 @@
+// Copyright (c) Tailscale Inc & AUTHORS
+// SPDX-License-Identifier: BSD-3-Clause
+
+//go:build !ts_omit_logtail && !ts_omit_clientmetrics
+
+package logpolicy
+
+import (
+ "expvar"
+
+ "tailscale.com/logtail"
+ "tailscale.com/util/clientmetric"
+)
+
+func exportClientMetrics(logger *logtail.Logger) {
+ if m, _ := logger.ExpVar().(interface{ Get(string) expvar.Var }); m != nil {
+ if m2, _ := m.Get("buffer").(interface{ Get(string) expvar.Var }); m2 != nil {
+ if v, _ := m2.Get("counter_filched_bytes").(*expvar.Int); v != nil {
+ clientmetric.NewCounterFunc("logtail_filched_bytes", v.Value)
+ }
+ if v, _ := m2.Get("counter_dropped_bytes").(*expvar.Int); v != nil {
+ clientmetric.NewCounterFunc("logtail_dropped_bytes", v.Value)
+ }
+ if v, _ := m2.Get("gauge_stored_bytes").(*expvar.Int); v != nil {
+ clientmetric.NewGaugeFunc("logtail_stored_bytes", v.Value)
+ }
+ }
+ }
+}
diff --git a/logpolicy/logtail_nometrics.go b/logpolicy/logtail_nometrics.go
new file mode 100644
index 000000000..51ce04689
--- /dev/null
+++ b/logpolicy/logtail_nometrics.go
@@ -0,0 +1,10 @@
+// Copyright (c) Tailscale Inc & AUTHORS
+// SPDX-License-Identifier: BSD-3-Clause
+
+//go:build ts_omit_logtail || ts_omit_clientmetrics
+
+package logpolicy
+
+import "tailscale.com/logtail"
+
+func exportClientMetrics(logger *logtail.Logger) {}