summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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) {}