diff options
| author | Joe Tsai <joetsai@digital-static.net> | 2025-12-11 11:25:00 -0800 |
|---|---|---|
| committer | Joe Tsai <joetsai@digital-static.net> | 2025-12-11 18:04:50 -0800 |
| commit | 887bfc3bc53f24fdafbc91c8935926e8df01e003 (patch) | |
| tree | 9494b5e35d1aadeea3893af27b3a228454912a71 | |
| parent | 9613b4eecca191e156c8195edb56dff4121c4bf9 (diff) | |
| download | tailscale-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.go | 3 | ||||
| -rw-r--r-- | logpolicy/logtail_metrics.go | 29 | ||||
| -rw-r--r-- | logpolicy/logtail_nometrics.go | 10 |
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) {} |
